我有一个包含这样的文件的文件
name: A id: B cl: C
name: D id: E cl: F
name: I id: G cl: K
我在cl:之后grep内容并将其存储在数组
中 #!/usr/bin/perl
@success=qw(C J K L);
@arr=qw(P M C);
my $pattern="is present here";
local $/;
open (<FILE>, sl.txt);
my $ln=<FILE>;
while($ln=<FILE>)
{
if($ln=~$pattern)
{
{local $/="\n"; @using=`grep "cl" sl.txt | cut -d " " -f 6 `;}
print "\n the using array is @using \n";
print "$using[0] ,$using[1] \n";
chomp(@using);
print" after chomp @using\n";
foreach my $lb (@using)
{
if($lb eq $success[2])
{
print " comparison true\n";
}
else
{
print " false comparison\n";
}
}
}
}
close(<FILE>);
请检查为什么这个comaprison在grepping和chomp之后失败了。在chomp @using和chomp @using之后是相同的
答案 0 :(得分:1)
鉴于此脚本:
#!/usr/bin/env perl
use strict;
use warnings;
my @using = qx{grep "cl:" sl.txt | cut -d " " -f 6};
print "Before:\n";
print "[$_]\n" foreach (@using);
chomp @using;
print "After:\n";
print "[$_]\n" foreach (@using);
此数据文件sl.txt
:
name: A id: B cl: C
name: D id: E cl: F
name: I id: G cl: K
Mac OS X 10.9.1上的Perl 5.18.1产生:
Before:
[C
]
[F
]
[K
]
After:
[C]
[F]
[K]
这看起来代码行为正确。当您将调试打印循环放在适当位置时,您从每个脚本中获得了什么? (使用qx{ … }
是另一种回写引号的方式。)