Невозможно распечатать массив при чтении из существующего файла - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть файл данных, в каждой строке которого содержится один номер. Я пытаюсь прочитать этот файл в массив. Вот сценарий, который я написал:

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

Но после выполнения этого файла ничего не было распечатано? Я проверил ввод test.list, который находится в правильном месте. В чем может быть причина?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Вам не хватает оператора <> (строка):

my @cArray = <FILEC>;

должен помочь.

1 голос
/ 03 февраля 2012

FatalError верный, вам нужен оператор readline. Вы можете прочитать больше о <> в perldoc perlop и больше о функции readline в 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
  • проверка успешности открытия
  • используйте лексическую, а не голую ручку
  • use strict, а также use warnings (вместо -w)

1036 * дает *

#!/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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...