-2

我有一个文件,其中包含这样的内容

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

4

1 回答 1

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

于 2014-01-28T07:03:38.170 回答