Пример 3. Разделение полей. #!/usr/local/bin/perl open(PASS, " while() { ($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 ---------------------------------------------------------------------- Login:@<<<<<<<< Uid:@<<< Gid:@<<< Home dir:@<<<<<<<<<<<<<<<<<<<<< $login, $uid, $gid, $home_dir ---------------------------------------------------------------------- # Это последняя строка программы Фрагмент результата: Пользователь: Калужский ликероводочный завод. Лучшие водки и настойки. Звонить только перед праздником Кострикову Анатолию т. 2-23-06,,, ---------------------------------------------------------------------- Login:uucryst Uid:1055 Gid:66 Home dir:/var/spool/uucppublic/ ---------------------------------------------------------------------- Пользователь: Торговый Дом Дилен,,, ---------------------------------------------------------------------- Login:uudilen Uid:1075 Gid:66 Home dir:/var/spool/uucppublic ----------------------------------------------------------------------
Следующий урок 1 2 3
8 8 8
| |