Differences
This shows you the differences between the selected revisions of the page.
library_perl 2012-03-05 | library_perl 2022-06-16 (current) | ||
Line 1: | Line 1: | ||
====== Using WinSCP .NET Assembly from Perl (ActivePerl) ====== | ====== Using WinSCP .NET Assembly from Perl (ActivePerl) ====== | ||
- | &beta_feature | + | //This article is based on [[https://www.activestate.com/products/perl/|ActivePerl]] Perl distribution.// |
- | + | ||
- | //This article is based on [[http://www.activestate.com/activeperl|ActivePerl]] Perl distribution.// | + | |
===== Installing and Registering for COM ===== | ===== Installing and Registering for COM ===== | ||
Line 13: | Line 11: | ||
==== [[enums]] Accessing Enumeration Values ==== | ==== [[enums]] Accessing Enumeration Values ==== | ||
- | As Perl accesses COM classes via ''IDispatch'', it does not make use of type library, hence it does not have direct access to constants defined there, like ''[[library_sessionoptions#properties|Protocol.Sftp]]'' for instance. | + | As Perl accesses COM classes via ''IDispatch'', it does not make use of type library, hence it does not have direct access to constants defined there, like ''[[library_sessionoptions#protocol|Protocol.Sftp]]'' for instance. |
One of several ways to use these constants is to use ''%%Win32::OLE::Const->Load%%'' method. It returns hash array of all enum members from type library, with keys like ''<type>_<member>'', e.g. ''Protocol.Sftp'' becomes ''Protocol_Sftp''. | One of several ways to use these constants is to use ''%%Win32::OLE::Const->Load%%'' method. It returns hash array of all enum members from type library, with keys like ''<type>_<member>'', e.g. ''Protocol.Sftp'' becomes ''Protocol_Sftp''. | ||
Line 32: | Line 30: | ||
$sessionOptions->{'Protocol'} = $consts->{'Protocol_Sftp'}; | $sessionOptions->{'Protocol'} = $consts->{'Protocol_Sftp'}; | ||
- | $sessionOptions->{'HostName'} = "example.com"; | + | $sessionOptions->{'HostName'} = 'example.com'; |
- | $sessionOptions->{'UserName'} = "user"; | + | $sessionOptions->{'UserName'} = 'user'; |
- | $sessionOptions->{'Password'} = "mypassword"; | + | $sessionOptions->{'Password'} = 'mypassword'; |
- | $sessionOptions->{'SshHostKey'} = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"; | + | $sessionOptions->{'SshHostKeyFingerprint'} = 'ssh-rsa 2048 xxxxxxxxxxx...'; |
</code> | </code> | ||
- | ==== Event Handlers ==== | + | ==== [[event_handlers]] Event Handlers ==== |
The ''[[library_session|Session]]'' class exposes several [[library_session#events|events]]. | The ''[[library_session|Session]]'' class exposes several [[library_session#events|events]]. | ||
Line 59: | Line 57: | ||
{ | { | ||
my ($sender, $e) = @args; | my ($sender, $e) = @args; | ||
- | print $e->{'FileName'} . " => " . $e->{'Destination'} . "\n"; | + | printf "%s => %s\n", ( $e->{'FileName'}, $e->{'Destination'} ); |
} | } | ||
} | } | ||
Line 82: | Line 80: | ||
</code> | </code> | ||
- | ===== Example ===== | + | ===== [[example]] Example ===== |
This example is functionally equivalent to [[library#example|overall C# example for WinSCP .NET assembly]]. | This example is functionally equivalent to [[library#example|overall C# example for WinSCP .NET assembly]]. | ||
Line 111: | Line 109: | ||
$sessionOptions->{'UserName'} = 'user'; | $sessionOptions->{'UserName'} = 'user'; | ||
$sessionOptions->{'Password'} = 'mypassword'; | $sessionOptions->{'Password'} = 'mypassword'; | ||
- | $sessionOptions->{'SshHostKey'} = 'ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'; | + | $sessionOptions->{'SshHostKeyFingerprint'} = 'ssh-rsa 2048 xxxxxxxxxxx...'; |
# Connect | # Connect | ||
Line 120: | Line 118: | ||
$transferOptions->{'TransferMode'} = $consts->{'TransferMode_Binary'}; | $transferOptions->{'TransferMode'} = $consts->{'TransferMode_Binary'}; | ||
- | my $transferResult = $session->PutFiles('d:\\toupload\\*', '/home/user/', FALSE, $transferOptions); | + | my $transferResult = |
+ | ···$session->PutFiles('d:\\toupload\\*', '/home/user/', FALSE, $transferOptions); | ||
# Throw on any error | # Throw on any error |