Perl chomp功能无法正常工作

时间:2014-01-28 06:22:08

标签: perl chomp

我有一个包含这样的文件的文件

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之后是相同的

1 个答案:

答案 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{ … }是另一种回写引号的方式。)