my %args = (ssh_args => [] ); ... push @{ $args{ssh_args} }, port => 22; #### my %args = (ssh_args => {} ); ... $args{ssh_args}->{port} = 22; #### use Net::SFTP; my %args = (ssh_args => {}); $args{user} = $user; $args{password} = $pass; $args{ssh_args}->{port} = 22; my $sftp = Net::SFTP->new($host,%args);