use strict; if ($^O ne 'MSWin32') { # NOT on windows? require POSIX; require Filesys::SmbClient; } ... sub OpenFile { my ($server, $path, $username .... ) = @_; if ($^O eq 'MSWin32') { # open file directly as //server/path on Windows ... } else { # open file via smbclient on *nix ... } }