|

CuTTer (icutter@mail.ru)
Perl для перцев
Xakep, номер #020, стр. 020-042-5
$name=;
chomp ($name);
if (-e $name){
unlink ($name);
print "Файл $name удален";
} else {
print "Файл $name не найден";
}
Как видишь, -e возвращает 1 (истинна), если файл существует.
А теперь научимся переименовывать файлы. Для этого воспользуемся оператором rename. В качестве параметров используется старое имя файла и новое. Вот как переименовываются файлы:
rename ("old", "new") || die "Невозможно переименовать файл";
Функции: твои личные фрикции
Вот мы постоянно использовали функции print, chomp, пора бы и самому какую-нибудь придумать. :-)) Сейчас этим мы займемся. Наши функции называют подпрограммами, определяются в Перле они следующим образом:
sub имя {
оператор_1
оператор_2
}
Поле имя - это название процедуры (подпрограммы), которое может быть таким же, как и у скалярных переменных, массивов и хешей. Т.е. у нас возможен скаляр $some, массив @some, хеш %some и подпрограмма some. Когда подпрограмма вызывается, то выполняется весь блок операторов, который входит в нее, а вызывающему объекту возвращается какое-то значение. Посмотрим, как с ними работать:
$sum=sum (1,2);
print $sum;
sub sum {
($a, $b)=@_;
return ($a+$b);
}
На экране ты увидишь число 3 (хе-хе, процедура сложила 2 числа). Здесь уже используется новый массив @_, который в себе хранит все значения, передаваемые подпрограмме. В данном случае мы присваиваем переменной $a и $b значение 1 и 2. Как ты догадался, все значения возвращает оператор return. После его выполнения процедура прекращает свое действие, даже если бы еще следовали какие-нибудь операторы.
Процедуры использовать очень просто и в то же время удобно. Если ты будешь постоянно писать на Перле, то без них ты просто не обойдешься (как без ёнга :), если ты девушка - извини ;).
Но подпрограмме можно ничего не передавать, тогда перед вызовом процедуры надо поставить знак "&" или приписать фигурные скобки в конце подпрограммы.
А теперь я расскажу про локальные переменные в подпрограммах. Это такие переменные, которые действительны только в рамках данной подпрограммы. Их имена могут совпадать с именами глобальных переменных. Локальные переменные объявляются командой my. Вот пример, чтобы вкурить ее действие:
$test="Я - глобальная переменная!";
&show;
print "$test\n";
sub show{
my ($test);
$test="Я - локальная переменная!";
print "$test\n";
}
Наверное, ты подумал, что на экране появится дважды "Я - локальная переменная!", но нет, программа родит это:
Я - локальная переменная!
Я - глобальная переменная!
Позитивная динамика кода: отращиваем хобот
Например, можно по определенным критериям разбивать строки на поля. Это делается с помощью функции split, а потом, наоборот, склеить эти "разрезанные кусочки".
Начнем со split. Она получает какое-то выражение и строку и ищет в нем все экземпляры данного выражения. Не совпавшие части возвращаются в виде списка:
$value="ляля-кал-выкинь-отстой";
@values=split (/-/,$value);
foreach $cur (@values){
print "$cur\n";
}
После запуска на экране должна вылезти вот такая надпись:
ляля
кал
выкинь
отстой
Как видишь, split вернул все, что находилось между знаком тире (-). Эти данные присвоились массиву @values, и его содержимое мы вывели на экран. После такого надругательства над бедной переменной $value ее надо снова собрать по кусочкам:
Назад на стр. 020-042-4 Содержание Вперед на стр. 020-042-6
|