|
тся после окончания программы.
Результат работы этой программы тот же что и команды cat /etc/passwd.
По экрану пробежали непонятные строки но зато теперь перед вами
открыты горизонты Пел программирования!
Все последующие примеры будут развитием этой программы и она
превратится из гадкого утенка в прекрасного лебедя (не генерала).
Пример 3 Разделенеие полей.
#!/usr/local/bin/perl
open(PASS, ")
{
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
print "$login \t $name\n";
}
close(PASS);
Пояснение:
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
Присвоить указанным переменным поля входной строки, считая разделителем символ
':'.
print "$login \t $name\n";
Вывести login - имя пользователя и его описание. Поля разделены символом '\t'
- табуляции.
Пример 4 Вывести имена пользователей отсортированных по группам.
#!/usr/local/bin/perl
open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Файл не найден!";
while()
{
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
print "$login \t $gid \t $name\n";
}
close(PASS);
Поеснения:
open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Файл не найден!";
В данной строке весь фокус! Входным файлом для нашей программы
стал выход команды sort которая и отсортирует входные данные.
Форматированный вывод.
Ну а теперь напечатаем на экране все наши данные в удобной форме.
#!/usr/local/bin/perl
open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Файл не найден!";
while()
{
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
write(); # Форматированный ывод данных.
}
close(PASS);
exit 0; # Завершение программы
############ Описание формы вывода ##################
format STDOUT =
Пользователь: ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$name
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$name
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$name
-------------------------
|
|