2012-02-02 20 views
0

データファイルがあり、各行に1つの番号が入っています。私はこのファイルを配列に読み込もうとしています。ここで私が書いたスクリプトです:配列を既存のファイルから読み取るときに配列を印刷できません

#!/usr/bin/perl -w 
$file1 = '/home/usr1/test.list'; 
open(FILEC, $file1); 
my @cArray = FILEC; 
close FILEC; 
print @cArray; 

は、しかし、このファイルを実行した後、何もプリントアウトされなかったのですか?正しい場所にある入力、test.listを確認しました。理由は何でしょうか?

+0

使用strict'と '使用warnings'が問題を追跡に役立ったでしょう'さらに別のケース。 –

答えて

3

あなたは<>(ライン)演算子を逃している:

my @cArray = <FILEC>; 

は助けるべきです。

1

FatalErrorが正しい場合は、readline演算子が必要です。 <>についてはperldoc perlopreadlineについてはperldoc -f readlineの詳細をご覧ください。

この知識があれば、次のような理由も理解できます(可読性はあまり推奨されません)。またData::Dumperを使用して@cArrayのより良い表現を印刷します。

#!/usr/bin/env perl 

use strict; 
use warnings; 

use Data::Dumper; 

@ARGV = qw(/home/usr1/test.list); 
# or remove previous line and call script as 
# script.pl /home/usr1/test.list 

my @cArray = <>; 

print Dumper \@cArray; 

さらにいくつかの注意事項:ご希望のより現代的なバージョン:

  • を扱う裸の単語の語彙ではなくを使用
  • を成功開くopen
  • チェックの3つの引数形式を使用します
  • use strictおよびuse warnings-wではなく)

与える

#!/usr/bin/env perl 

use strict; 
use warnings; 

my $file1 = '/home/usr1/test.list'; 
open(my $handle, '<', $file1) 
    or die "Could not open $file1: $!"; 
my @cArray = <$handle>; 

print @cArray; 
関連する問題