Описание проблемы: программа "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/shexec < 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
doneexit 0
А как сделать на perl - не знаю.
Система CentOS.
Очень надеюсь на совет! Кстати, результат я выложу для упрощения жизни таким, как я, на страницу обсуждения http://www.iredmail.org/forum/post4247.html
http://www.lmgtfy.com/?q=perl+get+process+return+codeПробовать переменную $? пробовали?
>http://www.lmgtfy.com/?q=perl+get+process+return+code
>Пробовать переменную $? пробовали?Нет, не пробовал. Сейчас посмотрю. Спасибо! Думаю это именно то, что мне нужно.
PS: Странно, что мне не удается авторизоваться на форуме, анонимусом хожу :(
Как раз переменная $? есть то, что я искал. Спасибо!