FAQ по perl и программированию для web - Основные возможности языка

ОГЛАВЛЕНИЕ


3. Как сделать на перле то-то (основные возможности языка)

3.1 Как пользоваться функцией pack (getpwuid, dmbopen)?

man perlfunc или "perldoc -f имя_функции | pod2text"

3.2 Как узнать размер файла (дату создания, атрибуты, разрешения на доступ)?

С помощью так называемых файловых тестов, которые имеют вид (-тест "имя файла"), например:

(-s "file.txt")

размер файла

-e

существует ли файл

-w

доступен ли на запись

-M

количество дней со дня модификации

-t

является ли терминалом

(Как обычно, это неполный список. См. man perlfunc)

3.3 Как отправить почту из скрипта на Perl?

Способ для Unix oт Alex Efros

        
open MAIL, '|/path/to/your/sendmail -t'; # Pipe к sendmail
print MAIL "From: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.\n",
"To: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.\n",
"Subject: Wow! I got some mail for you!!!\n\n",
$message;
close MAIL;

У меня не Unix! Что делать?

Вероятно, Вам поможет модуль Net::SMTP

3.4 Как отправить почту с вложениями (attachments)?

Возьмите на CPAN модуль MIME::Tools и прочтите от него README. (MIME-tools.xxxxx.tar.gz)

3.5 Как определить правильность адреса электронной почты Internet?

Гарантированно -- никак. Вы можете проверить адрес на правильность синтаксиса при помощи Email::Valid. И все. Если нужен гарантированно правильный e-mail для web-сайта, вы можете воспользоваться методом от Алексея Тутубалина: требовать пароль для доступа к информации, а сам пароль высылать по электронной почте. Тогда человек должен будет указать свой e-mail, конечно же, если ему интересна эта информация с вашего сайта. 

3.6 Как написать модуль?

Простейший случай:

Сам модуль представляет из себя файл с именем MyModule.pm следующего содержания:

MyModule.pm
package MyModule;
require Exporter;

@ISA = qw(Exporter);

@EXPORT = qw(идентификаторы для экспорта: подпрограммы, имена переменных и
пр.);
# Теперь после того, как вы напишите use MyModule в своей программе, у вас все
# упомянутые здесь идентификаторы станут видны. Этот метод не рекомендуется,
# так как вы "засоряете" именное пространство программы.

# И/или
@EXPORT_OK = qw(идентификаторы для экспорта: подпрограммы, имена переменных и
пр.);
# Идентификаторы, прописанные здесь будут видны в Вашей программе как
# MyModule::Идентификатор (подпрограммы) или $MyModule::Идентификатор
# (переменные)
# Или, Вы можете написать use MyModule qw(Ид1 Ид2 $Ид3); и все будет как в
# первом случае. Это рекомендуемый вариант.

... ваши подпрограммы и пр ....

1; # Обязательно

Программа, его использующая:

myprg.pl
use MyModule qw(...);
# Ну и далее

Подробности смотрите в perlmod(1), Exporter(3pm), Camel Book

3.7 Как получить доступ к n-му символу строки?

Надо использовать функцию substr. Например, получить 15й символ из строки $string:

$char = substr($string, 15, 1);

Установить 15й символ строки $string:

substr($string, 15) = 'A';
Можно даже использовать более чем односимвольные последовательности:
$ss = substr($string, 15, 5);
substr($string, 15) = 'Хо-Хо';