我正在尝试从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;
}
}
答案 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;
}