während man bei Skript-Sprachen einen Server aufsetzen muss
Das ist inkorrekt. Das geht mit stinknormalen Kommandozeilenprogrammen, z.B. (ungetested):
use HTTP::Request::Common qw(POST);
use LWP::UserAgent qw();
my $ua = LWP::UserAgent->new;
$ua->request(
POST(
'http://example.org/endpoint',
Content_Type => 'form-data',
Content => [
field_name => ['file_name'],
],
)
);