Что касается манипулирования @ARGV - это определенно рабочий код, Perl, безусловно, позволяет вам это делать. Я не думаю, что это хорошая привычка кодирования. Большая часть кода, который я видел, который использует идиому «пока (‹>)», использует ее для чтения из стандартного ввода, и я изначально ожидаю, что ваш код будет делать это. Более читаемым шаблоном может быть открытие/закрытие каждого входного файла по отдельности:
foreach my $file (@files) {
open FILE, "<$file" or die "Error opening file $file ($!)";
my @lines = <FILE>;
close FILE or die $!;
foreach my $line (@file) {
if ( $line =~ /$pattern/ ) {
# do something here!
}
}
}
Это было бы легче читать для меня, хотя это еще несколько строк кода. Perl дает вам большую гибкость, но я думаю, что гораздо важнее разработать свой собственный стиль в Perl, который будет читабельным и понятным для вас (и ваших коллег, если это важно для вашего кода/карьеры).
Помещать подпрограммы в основную функцию или в подпрограмму — тоже по большей части стилистическое решение, с которым стоит поэкспериментировать и подумать. Современные компьютеры настолько быстры в этом, что стиль и удобочитаемость гораздо важнее для таких сценариев, поскольку вы вряд ли столкнетесь с ситуациями, в которых такой сценарий перегружает ваше оборудование.
Удачи! Перл — это весело. :)
Редактировать: это, конечно, правда, что если бы у него был очень большой файл, он должен был бы сделать что-то более умное, чем глотать весь файл в массив. В этом случае что-то вроде этого определенно было бы лучше:
while ( my $line = <FILE> ) {
if ( $line =~ /$pattern/ ) {
# do something here!
}
}
Пункт, когда я написал «вы вряд ли столкнетесь с ситуациями, в которых такой сценарий перегружает ваше оборудование», предназначался для того, чтобы охватить это, извините, что не был более конкретным. Кроме того, у кого вообще есть жесткие диски емкостью 4 ГБ, не говоря уже о файлах объемом 4 ГБ? :П
Другое редактирование: просматривая Интернет по совету комментаторов, я понял, что есть жесткие диски, которые намного больше, чем 4 ГБ, доступные для покупки. Я благодарю комментаторов за указание на это и обещаю в будущем никогда-никогда-никогда не пытаться написать саркастический комментарий в Интернете.
person
James Thompson
schedule
03.02.2009