URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2745
[ Назад ]

Исходное сообщение
"Внести данные из файла в хэш на perl"

Отправлено Jetari , 01-Апр-04 14:44 
Есть файл динамически обновляемый например "file"
в виде:
xxxx
yyyy
zzzz
hhhh
bbbb
ffff
необходимо внести эти данные в хэш в виде - первая строка ключ, вторая значение ключа, третья ключ и тд
%rt=(xxxx,yyyy,
     zzzz,hhhh,
     bbbb,ffff);

я пробовал %rt=`cat file`
не работает
выводит
%rt=xxxx: not found
как можно еще сделать?


Содержание

Сообщения в этом обсуждении
"Внести данные из файла в хэш на perl"
Отправлено alchie , 01-Апр-04 16:16 
>Есть файл динамически обновляемый например "file"
>в виде:
>xxxx
>yyyy
>zzzz
>hhhh
>bbbb
>ffff
>необходимо внести эти данные в хэш в виде - первая строка ключ,
>вторая значение ключа, третья ключ и тд
>%rt=(xxxx,yyyy,
>     zzzz,hhhh,
>     bbbb,ffff);
>
>я пробовал %rt=`cat file`
>не работает
>выводит
>%rt=xxxx: not found
>как можно еще сделать?

%rt= map { chomp; $_ } `cat file.txt`
только что попробовал, получается

$ cat t
12
qw
34
as
45
fg
gh
67
89
gh
78
df


$ perl -e '%rt= map { chomp; $_ } `cat t`; map { print "$_ => $rt{$_}; " } sort keys %rt;'

12 => qw; 34 => as; 45 => fg; 78 => df; 89 => gh; gh => 67;


"Внести данные из файла в хэш на perl"
Отправлено Jetari , 01-Апр-04 16:52 
>$ perl -e '%rt= map { chomp; $_ } `cat t`; map { print "$_ => $rt{$_}; " } sort keys %rt;'
>
>12 => qw; 34 => as; 45 => fg; 78 => df; 89 => gh; gh => 67;


Спасибо получилось


"Внести данные из файла в хэш на perl"
Отправлено vt , 02-Апр-04 13:24 
>Есть файл динамически обновляемый например "file"
>в виде:
>xxxx
>yyyy
>zzzz
>hhhh
>bbbb
>ffff
>необходимо внести эти данные в хэш в виде - первая строка ключ,
>вторая значение ключа, третья ключ и тд
>%rt=(xxxx,yyyy,
>     zzzz,hhhh,
>     bbbb,ffff);
>
>я пробовал %rt=`cat file`
>не работает
>выводит
>%rt=xxxx: not found
>как можно еще сделать?

На самом деле это работает, только и key и value будут с \n в конце

Проблему решает, в данном случае:
%h=split /\n/,`grep . file`

В общем случае:
regexp в grep определяет какие строки содержат данные
regexp в split определяет разделитель(разделители) данных