#!/usr/bin/perl use strict; use warnings; use IO::Socket; use IO::File; use Data::Dumper; binmode STDOUT; my $sock = IO::Socket::INET->new('localhost:80') or die $!; # Lade ein paar Textdateien hoch my $check = {}; # hashref zum Gegenchecken my @files = <*.txt>; foreach my $filename(@files){ my $content = do{ my $fh = IO::File->new; $fh->open($filename, O_BINARY|O_RDONLY) or die $!; read($fh, my $buffer, -s $fh); $check->{$filename} = -s $fh; $fh->close; $buffer; }; # Request-Header x-upload: filename print $sock <<"EOT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~EOT"; PUT /cgi-bin/put.cgi HTTP/1.1 Host: localhost Connection: Keep-Alive Content-Length: @{[length($content)]} x-upload: $filename $content EOT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~EOT } # Ergebnis abfragen # Request print $sock <<"EOT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~EOT"; GET /cgi-bin/put.cgi HTTP/1.1 Host: localhost Connection: Close EOT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~EOT # Response my $response = ''; $response .= $_ while <$sock>; # Ausgabe Hash: Dateiname => Dateigröße my $h = { $response =~ /(.*)==(\d+)/g }; print Dumper $response, $h, $check;