Плохо знакомы с perl ... возникли проблемы с chomp - PullRequest
1 голос
/ 07 ноября 2011

Я пытаюсь изучить Perl-программирование и использую его для чтения файла из конкурса;

#!/usr/local/bin/perl
use warnings;

open(FILE, <~/source/test.txt>);
@array = <FILE>;
$number = shift @array;

while($number--) {
    chomp($key = shift @array);
    chomp($message = shift @array);

    print "Key: $key";
    print "Message: $message";
}
print "\n";
close(FILE);

Файл содержит число N, затем следуют 2 * N строк, которые показывают количество пар ключ / сообщение.

Но когда я делаю эту программу, она печатает только последнее «сообщение» и ничего больше ... она ничего не печатает. Если я удаляю chomps, он работает как задумано, но с chomps там он просто обрезает все ... есть идеи почему?

// РЕДАКТИРОВАТЬ: убрал -w

1 Ответ

8 голосов
/ 07 ноября 2011

Вы читаете текстовый файл DOS / Win в окне Unix. Используя chomp, вы удаляете «LF» из «CRLF», но оставляете «CR», в результате чего все ваши строки отображаются одна поверх другой.

#!/usr/local/bin/perl -w
use strict;   # Do use this!
use warnings;

open(my $fh, '<', "$ENV{HOME}/source/test.txt") or die $!;
my @array = <$fh>;
s/\s+\z// for @array;  # Universal chomp

my $number = shift(@array);
while ($number--) {
   my $key     = shift(@array);
   my $message = shift(@array);

   print "Key: $key\n";
   print "Message: $message\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...