URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8775
[ Назад ]

Исходное сообщение
"Как получить значение возвращенное выполненной внешней командой"

Отправлено billybons2006аноним , 15-Июн-10 12:24 
Описание проблемы: программа "imapsync" предназначена для копирования почтовых ящиков по протоколу IMAP. После выполнения (удачного или нет) команда возвращает определенное значение (0 - все ОК, что-либо иное - проблема). Как мне в коде скрипта perl получить значение, возвращаемое выполненной командой "imapsync -v" (ключ -v в данном случае просто выводит версию программы, это я для тренировки).

Пример:

#!/usr/bin/perl

$filename="emails.txt";

open(FILE,"<",$filename) || die "$!\n";# открываем файл для чтения
while(<FILE>) {         # считываем построчно
       @F = split;     # выделяем столбцы (разделены табуляцией)
       @L = split('@', $F[0]);
       print "$L[0] - $F[1]\n"; # печатаем в формате "имя_ящика - пароль"
       system("imapsync -v"); # как узнать значение, возвращаемое программой imapsync?
}
close(FILE);

Господа perlovod'ы, я понимаю, что выше приведенный код - надругательство над возможностями perl! Но я не знаю этого языка, поэтому для себя составил код "по полочкам".

На shell нечто вроде того, что нужно, выглядит так:
#!/bin/sh

exec < emails.txt     # open for read

while read string
do
        printf "$string\n"
        result=`imapsync -v`
        echo $result
        if [ $? ]
        then
                printf "Returned value is $?.\n"
        fi
done

exit 0

А как сделать на perl - не знаю.

Система CentOS.

Очень надеюсь на совет! Кстати, результат я выложу для упрощения жизни таким, как я, на страницу обсуждения http://www.iredmail.org/forum/post4247.html


Содержание

Сообщения в этом обсуждении
"Как получить значение возвращенное выполненной внешней коман..."
Отправлено phpcoder , 15-Июн-10 12:29 
http://www.lmgtfy.com/?q=perl+get+process+return+code

Пробовать переменную $? пробовали?


"Как получить значение возвращенное выполненной внешней коман..."
Отправлено billybons2006аноним , 15-Июн-10 12:44 
>http://www.lmgtfy.com/?q=perl+get+process+return+code
>Пробовать переменную $? пробовали?

Нет, не пробовал. Сейчас посмотрю. Спасибо! Думаю это именно то, что мне нужно.

PS: Странно, что мне не удается авторизоваться на форуме, анонимусом хожу :(


"Как получить значение возвращенное выполненной внешней коман..."
Отправлено billybons2006аноним , 15-Июн-10 13:44 
Как раз переменная $? есть то, что я искал. Спасибо!