如何从unix命令将结果导入数组

时间:2012-10-05 20:50:46

标签: arrays perl unix cat

我正在尝试从Perl脚本中的unix命令将每个文件转储到一个数组中。以下是我得到的错误。有人可以帮我解决这个问题吗?

Can't locate object method "cat" via package "C:/prac/cmm_ping.txt" (perhaps you forgot to load "C:/test/cmm_ping.txt"?) at fandd.pl line 25.

以下是我的程序

#!/usr/bin/perl

use warnings;

@files=glob("C:/prac/*");

foreach $file (@files){
   @data=system(cat  $file);
      foreach $line (@data){`
        print $line;
    }
}

2 个答案:

答案 0 :(得分:1)

system(cat $file)

包含间接方法调用。以上相当于:

system($file->cat)

你的意思是

system("cat $file")

但这是错误的,因为您没有将$file转换为shell文字。最好避免完全绕过你不需要的shell来创建shell命令。

system('cat', $file)

答案 1 :(得分:1)

我采用了不同的方法来解决我在Perl中运行Unix命令的问题,我能够用下面的代码解决这个问题。

@files = <C:/prac/*.ext>;

for $file (@files){
  open (FILE, "$file")             or die $!;
  open (OUT,">> C:/prac/data.txt") or die $!;

  while($line= <FILE> ) {
    print OUT $line if $line =~ /something/ ;
  }

  close FILE;
  close OUT;
}