从现有文件中读取数组时无法打印出数组

时间:2012-02-02 19:15:33

标签: arrays perl file-io

我有一个数据文件,每行包含一个数字。我试图将此文件读入数组。这是我写的脚本:

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

但是在执行此文件后,没有打印出任何内容?我检查了输入test.list,它位于正确的位置。可能是什么原因?

2 个答案:

答案 0 :(得分:3)

您错过了<>(线路)运营商:

my @cArray = <FILEC>;

应该有所帮助。

答案 1 :(得分:1)

FatalError是正确的,你需要一个readline运算符。您可以在perldoc perlop中详细了解<>以及perldoc -f readlinereadline函数的更多内容。

一旦掌握了这些知识,您就会明白为什么以下内容也可以起作用(尽管可能不建议您阅读)。另外,我将使用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
  • 的三个参数形式
  • 检查打开是否成功
  • 使用词法而不是赤字句柄
  • 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;