Это снова не то, что мне нужно, но оно работает. За несколько минут намолотило полторы тысячи URL и сложило их неопрятной грудой в один файл. Будем двигаться дальше навстречу доброму волшебнику
ishc...
open (INPUT, '<urls.txt') or die $!;
my @urls;
@urls = <INPUT>;
close INPUT;
my $url;
open (TABS, '>>tabs.txt') or die $!;
foreach $url (@urls){
{my $tab = get("$url");
print TABS $tab;
}
}
close (TABS);
Теперь надо заглубиться в регулярные выражения. Тут у меня тоже была пара успехов, но до того, что нужно, еще далековато. Почему-то заменять один паттерн (даже вариабельный) на другой у меня получается, а вот запихивать выловленный в переменную -- нет. Чего-то я снова не понимаю простенького...
no subject
Date: 2012-01-08 01:22 am (UTC)/(pattern1)(pattern2)/; puts found patterns into variables $1, $2, ....
no subject
Date: 2012-01-08 01:24 am (UTC)no subject
Date: 2012-01-08 10:09 am (UTC)$a = /(pattern)/;
Надо обязательно
($a) = /(pattern)/;
no subject
Date: 2012-01-08 08:00 pm (UTC)no subject
Date: 2012-01-08 04:22 am (UTC)no subject
Date: 2012-01-08 07:20 pm (UTC)no subject
Date: 2012-01-08 08:51 am (UTC)почему бы не так: print TAB get($_) foreach (@urls) ; Не говоря уж о том, что массив @urls не нужон
print TABS get($_) while (<input ... >) ;
Перл язык сам по себе, не следует в него калькировать идиомы из других языков, получается очень коряво, за это почему-то именно перл и ругают
no subject
Date: 2012-01-08 08:29 pm (UTC)Профессионал, возможно, вообще подошел бы к проблеме иначе. Вот, например, так: http://ishc.livejournal.com/170129.html
Я увидел и выпал в осадок, хотя потом он все разжевал: http://ishc.livejournal.com/170278.html и сказал, что эта древняя магия называется sed.
no subject
Date: 2012-01-30 09:49 pm (UTC)А всякую херню типа этой sed-овской программы можно и на перле писать, только зачем? Программы типа пишут чтоб людям понятно было, а не роботам.
no subject
Date: 2012-01-30 10:19 pm (UTC)no subject
Date: 2012-01-08 02:55 pm (UTC)Начинающему же перловщику в простых скриптах объемом несколько десятков строк, выполняемых одну-две секунды на персоналке с памятью в несколько гигабайт надо по возможности писать все прямо и без изысков.
Например, какая экономия памяти достигается вот этим
my $url;
?
А это
@urls = <INPUT>;
весьма нетривиальная конструкция, которая в разных Perl'ах не исключено, что может сработать по разному,
например поместить в $url[0] количество строк.
Поэтому у вас и возникли трудности.
Регулярные выражения - это довольно самостоятельный субязык, заимствованный из UNIX. Конечно,он позволяет записывать очень малым количеством кода весьма нетривальные действия, что позволяет экономить сотни миллисекунд ...
Не углубляйтесь.
no subject
Date: 2012-01-08 07:18 pm (UTC)Признаться, о таких вещах, как миллисекунды и прочее я вообще не думаю, потому что (1) не программист, (2) perl начал осваивать примерно неделю назад и теперь, вероятно, на неопределенное время заброшу (поскольку изучал я его пока только с оной целью, которая, наконец, достигнута), хотя некоторые эффекты меня поразили.