2013-02-08 34 views
-4

我在解析文本文件的输出时遇到了问题。我想补充管道符号的字符之间做复式搜索类似于egrep命令,文本文件如下使用perl替换文本文件中的其他字符

service entered the stopped state,critical 
service entered the running state,clear 

代码:

open(my $data, '<', $Config_File) or die "Could not open '$Config_File" 
my $reg_exp; 
my $severity; 
my @fields=(); 
while (my $line = <$data>) 
{ 
    chomp $line; 
    if(!$line =~ /^$/) 
    { 
    @fields = split "," , $line; 
    $reg_exp = $fields[0]; 
    $severity = $fields[1]; 
    print $reg_exp; 
    } 
} 

#print $fields[0]; 
#last unless defined $line; 

close($data); 

预期输出

service entered the stopped state|service entered the running state 
+2

我们是否也可以看到一些输入? – squiguy

+1

你的代码与问题无关;没有输出。请问一个真正的问题,真正的代码和真正的输入/输出... – pavel

+0

我已经添加完整的问题,对不起错过了完整的问题,而粘贴 –

回答

1

你并不遥远,你只需要实际连接字符串。最简单的方法是将$fields[0]推送到一个数组,然后等待输入完成以打印它。即:

my @data; 
while (my $line = <$data>) { 
    next if $line =~ /^$/;   # no need to chomp 
    my @fields = split /,/, $line; 
    push @data, $fields[0]; 
} 
print join("|", @data), "\n"; 

我感觉到你正在努力实现这个代码别的东西,并认为这是所谓的XY-problem

+0

你的回答工作感谢 –

+0

@SandeepKrishnan不客气。 – TLP

相关问题