1

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;
    }
}
4

2 に答える 2

1
system(cat $file)

間接メソッド呼び出しが含まれています。上記は次と同等です。

system($file->cat)

あなたが意味した

system("cat $file")

$fileしかし、シェル リテラルに変換しないため、これは誤りです。とにかく必要のないシェルをバイパスして、シェルコマンドを完全に作成しないようにすることをお勧めします。

system('cat', $file)
于 2012-10-05T20:53:08.443 に答える
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;
}
于 2012-10-10T14:41:14.567 に答える