perl
Brother Rabbit написал(а) к Michael Dukelsky в Dec 18 14:25:04 по местному времени:
Нi, Michael!
08 дек 18 12:48, Michael Dukelsky -> Brother Rabbit:
MD>>> my @args = ("/path/to/uudecode", "-o", "$ofile", "$ofile\.uue");
MD>>> system(@args);
BR>> Я пошел другим путем. ;)
MD> А полный путь указать не пробовал?
Нет. Я решил сразу разъююкивать, т.к. вызывать из скрипта бинарь, что бы потом за ним еще ююки удалять, мне показалось не удобно.
BR>> === Import Windows Clipboard Start ===
[...skipped...]
BR>> === Import Windows Clipboard End ===
MD> Судя по binmode(F), это винда.
Да. Под виндой оно без binmode разъююки ломает.
MD> А в винде как раз без приведённого мной выше фокуса system() не
MD> работает.
Не работало в альтлинуксе. wget, кстати, из обычного перлового скрипта нормально вызывается и там, и там именно так, как я делал с uudecode.
BR>> Здесь, видимо, нужно еще проверять $ofile на наличие и если он уже
BR>> есть, выбирать другое имя или удалять старый.
MD> Да. А после open() написать or ... и дальше ругнуться в лог и прекратить
MD> обработку.
Сдедлал вот так:
=== Import Windows Clipboard Start ===
$uuedir = "\/home\/fido\/uue";
# директория, в которой складывать разююки.
if (defined($area)) {
if ( $text =~ /\rbegin 644[ ]+([^ \r]+)\r(.*\r)end\r/i ){
@uuelines = split(/\r/,$2);
my $ofile = "$uuedir\/" . uc($area) ."\/$1";
mkdir "$uuedir\/" . uc($area) if !-e "$uuedir\/" . uc($area);
my $i = 0;
while (-e $ofile) {
$ofile = "$uuedir\/".uc($area)."\/".sprintf("%08x", time()).sprintf("%02d",$i)."$1";
$i++;
if ($i > 255) {
$ofile = "$uuedir\/" . uc($area) ."\/$1";
unlink($ofile);
}
}
# w_log("uue of \"$ofile\" found.");
if (open(F, ">>$ofile")){
binmode(F);
foreach my $val ( @uuelines ){
$uudecoded_data = unpack("u", $val);
print(F $uudecoded_data);
}
close(F);
# w_log("Dcoded \"$ofile\" from Area \"$area\".");
} else {
w_log("Can't open \"$ofile\"\: $!\.");
}
}
}
=== Import Windows Clipboard End ===
На линуксовой машине работает. Разъююкивает и по директориям раскладывает.
Нave nice nights.
Brother Rabbit.
--- Хороший собеседник не только внимательно слушает, но и вовремя наливает.
|