#!/usr/bin/perl use strict; use warnings; use Expect; my $REMOTE = 'name@server:/dir'; my $LOCAL = 'file'; my $cmd = "sftp $REMOTE"; my $exp = Expect->spawn($cmd) or die; $exp->expect(120, "password: ") or die; $exp->send("dummy\r"); $exp->expect(120, "sftp> ") or die; $exp->send("put $LOCAL\r"); $exp->expect(600, "sftp> ") or die; $exp->send("bye\r"); $exp->close();