Что вы уже пробовали?
ниже команда на самом деле не «один» лайнер - и это требует модуля CPAN (Perl6::Form
- который, вероятно, следует просто назвать Perl::Form
и включенным с perl
), но она работает с быстрым вырезать и вставить если вы уже установлен модуль.
perl -e '(my @DATA = qq/12,1427766557, bob
22,1427762457, bill
53,1427769753, bob/);
@DATA = map { [ split/,\s*/ ] } map { chomp; split/\n/ } @DATA;
push @{ $hash{ $_->[2] } } , "$_->[1] $_->[0]" for @DATA;
@header = keys %hash ;
@data = values %hash ;
use Perl6::Form;
print form
"{[[[[[[[[[[[[} {[[[[[[[[[[[[[[[[}", @header,
"{[[[[[[[[[[[[} | {[[[[[[[[[[[[[[[}", @data ;'
Команда сохраняет исходные данные в массиве/список называется @DATA
(вместо чтения из файла или положить его в __END__
или __DATA__
сценария); затем использует map
до split
его и push
в %hash
с именами Боба и Билла как хэш key
и строку чисел как хэш value
; то он печатает вещи, используя Perl6::Form
(который действительно не нужен, но который я просто хочу рекламировать).
Выход:
bob bill
1427766557 12 | 1427762457 22
1427769753 53 |
выше может быть довольно легко превратить в сценарий, который падает в зависимость от form
команды из Perl6::Format
. Если вы это сделаете, разместите свою работу как дополнение/редактирование на свой вопрос или в виде отдельного ответа. Вы можете ответить на свой вопрос.
Пока ничего.Я пытаюсь это продумать. Должен ли я идти массив или хэш? Я думаю, что если я укажу в правильном направлении, я смогу разобраться. – user3718452
Хеш хэшей: 'perldoc perldsc' – toolic
Я думаю, вам нужно использовать хеш хэшей, и вам нужно перебирать каждый хэш в зависимости от количества элементов в хеше. И тогда вам нужно разработать логику печати. – Raghvendra