-
Perl, балин...
Memento mori, All!
Подмогните в освоении субжа, плз.
Хочу из текстовика вида:
Рынок\t0482\t250022
Рынок\t0482\t250023
Рынок\t0482\t250024
Магазин\t0482\t123321
Магазин\t0482\t123322
Магазин\t0482\t123323
, разбитого табуляциями, вынуть названия фирм, телефонные коды и телефоны. Все это впихнуть в хэш-хэшей вида:
Firms{name{code, tel}},
и потом вывести на экран в виде:
Рынок: 250022, 250023, 250024
Магазин: 123321, 123322, 123323
Уперся пока в заполнение этого самого Firms{}.
Буду благодарен за пример.
-
Обрабатываешь массив строк в цикле, построчно - ищешь первый таб, потом второй..
split, к сожалению, не пройдет:)
Нет времени пока писать пример\код, может вечерком напишу)
а так - пока идея...)
-
[quote=Tigra]Обрабатываешь массив строк в цикле, построчно - ищешь первый таб, потом второй..
split, к сожалению, не пройдет:)[/quote]
Он как раз подходит. Проверяю выводом на экран считываемых из файла значений.
Проблема в корректном впихивании этих значений в хэш так, чтобы они не затирались.
-
упс) поняла.. заработалась я что-то)
Проблема с одинаковыми ключами.. Как решить самостоятельно - пока в голову не приходит, может, еще придет)
Модуль Hash::Merge.. так, кажется
-
На РНР с массивами всё просто... Дался вам этот Перл. Я тоже когда-то на нем пробовал ваять, потом плюнул и перешел на РНР...
-
[quote=Lord of rings]На РНР с массивами всё просто... Дался вам этот Перл. Я тоже когда-то на нем пробовал ваять, потом плюнул и перешел на РНР...[/quote]
Пока для себя - выбираешь ты. Когда за деньги - выбирает заказчик :). И ежели ему надоть перл, то надоть знать перл.
[b]2All[/b] Промблему решил перековыряв доку к ActivePerl-у. С полпинка решение не прошло из-за попытки применения PHP-ных же понятий о массивах и хэшах. В перле оно по-другому реализовано. Добавление элемента в конкретный массив в хэше скалярных массивов в перле:
[code]
if ( m/$TelRE/om )
{
@tels = split (" ");
## Пробегаем по всем телефонам фирмы и впихиваем их как ключи в хэш телефонов
for ( $Cntr = 0; $Cntr < scalar(@tels); $Cntr++ ) {
push @{ $OutTels {$tels[$Cntr]} }, $name;
}
}[/code]
Конструкция "push @{ $" явилась неожиданностью :)
-
Не усложняйте на ровном месте используйте регулярные выражения.
/\s?(.*)\\(.*)\\(.*)\s?/