Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Снова скрипт для первоклассника


Автор: ReactOS 26.3.2008, 22:45
Привет всем!

Есть user.txt файл, его содержимое:

1117479114,1117429104,1217479104,1187479104,1177479104Через запятую указаны файлы которые нужно открыть (к каждому названию файла нужно дописать .txt)

Эти файлы c таким содержимым:
Код


Название|Имя|Почта|Время|имя|xx|0|ип|текст||||
Название|Имя|Почта|Время|имя|xx|0|ип|текст||||
Название|Имя|Почта|Время|имя|xx|0|ип|текст||||
Название|Имя|Почта|Время|имя|xx|0|ип|текст||||


С каждого такого файла нужно взять первую строчку и вывести с нее навазние, почту и текст.
Пытаюсь открыть эти файлы так:

Код

my %hash = ();
foreach my $fname (qw($fimena_failov)) {
  open (IMEN,"<","Messages/${fname}.txt") or die "Can't open file $!\n";
       flock(IMEN,LOCK_SH); # на открытие

          ***
     
  close(IMEN) or die "Can't close file $!\n";
}


Загвоздка в том что я не знаю как с каждого открытого файла взять только 1 первую строчку.

Помогите пожалуйста. Также может это можно сделать как-то более эстетично, профессиональней что ли чем у меня. Спасибо.


Автор: Unrealm 26.3.2008, 23:18
$a = <IMEN>; ?
Для истинных эстетов можно $a = readline(<IMEN>); smile

Автор: amg 27.3.2008, 09:41
Цитата(ReactOS @  26.3.2008,  22:45 Найти цитируемый пост)
сделать как-то более эстетично
Эстетика - она у каждого своя. Например, кому-то может понравиться и такое:
Код

foreach ( first('imena_failov') =~ /(\d+)/g ) {
  my ($title,$mail,$text) = (split /|/, first("$_.txt") || next)[0,2,8];
  print "$_: $title,$mail,$text\n";
}

sub first { # вместо этого можно file_read из File::Slurp, например
  open my $f, '<', shift or return undef;
  <$f>;
}


Автор: tishaishii 27.3.2008, 17:22
scalar <FH>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)