http://qs1969.pair.com?node_id=558229


in reply to Re: How to execute succcessful this Perl script in Linux, window and solaris?
in thread How to execute succcessful this Perl script in Linux, window and solaris?

another thing. if you do not need STDERR you can do a dirty trick! ;)
#!/usr/bin/perl -w use strict; use warnings; if ( $^O =~ /^(MS)?Win/ ) { eval { #dirty hack to avoid the warning close STDERR; require Win32::DriveInfo; my $TotalNumberOfFreeBytes = (Win32::DriveInfo::DriveSpace('c: +'))[6]; my $TotalNumberOfBytes = (Win32::DriveInfo::DriveSpace('c:'))[ +5]; print "This is $^O \n"; print "Total Free: $TotalNumberOfFreeBytes\tTotal size: $Total +NumberOfBytes\n"; }; print $@, "\ndone!"; } elsif ( $^O =~ /^linux/ ) { print "This is Linux OS!!!\n"; }
HTH
  • Comment on Re^2: How to execute succcessful this Perl script in Linux, window and solaris?
  • Download Code

Replies are listed 'Best First'.
Re^3: How to execute succcessful this Perl script in Linux, window and solaris?
by ikegami (Patriarch) on Jun 29, 2006 at 07:50 UTC

    close(STDERR) affects the whole program. There are better ways of suppressing warnings: (best to worse)

    • { no warnings 'warningtype'; ... } (Compile- and run-time, specific)
    • { no warnings; ... } (Compile- and run-time, broad)
    • { local $SIG{__WARN__} = {}; ... } (Run-time, broad)
    • { local *STDERR; ... } (Run-time, broad, has side effects.)

    And you're only hiding the symptom, not fixing the problem. Like the warning says, a piece of code that should get executed is not getting executed.




      Thanks all the Perl senior!!!! (^o^)...