Nicola
сори, даже 6.5кб
вырезка функции:
sub writeFile
{
my ($host, $src, $dst) = @_;
my ($total, $percent);
my $s = IO::Socket::INET->new(PeerAddr => $host, PeerPort => DEFAULT_PORT,
Proto => 'tcp') or die;
die "Can't open source $src.\n" unless -f $src and -r $src and
open FILE, $src;
my ($mode, $len) = (stat FILE)[2,7];
my $buf = pack 'CNNA*', WRITE_FILE_CMD, $mode, $len, $dst;
print $s pack('n', length $buf), $buf;
$| = 1;
print 'Sending... ';
my $startTime = time;
while (read FILE, $buf, 1024)
{
print $s $buf;
$total += length $buf;
my $p = int($total / $len * 100 + .5);
printf "\b\b\b\b%3d%", ($percent = $p) if $p > $percent;
}
sysread($s, $buf, 1) or die "Can't read result.\n";
close $s;
my $result = unpack 'C', $buf;
my $endTime = time;
$endTime++ unless $endTime - $startTime;
print "\b\b\b\b", $result ? "done." : "failed.";
printf " %d bytes/sec\n", int($total / ($endTime - $startTime));
}
какой нежный скрипт )) чуть что - сразу падает ))