in reply to import external package

B::Deparse is useful to help diagnose your code
D:\>cat temp #! /usr/local/bin/perl BEGIN { push ( @INC, "$ENV{HOME}/Filesys-DiskSpace-0.05/lib"); # Filesys:: +DiskSpace - Perl df } use strict; use warnings; require Filesys::DiskSpace; # file system /home or /dev/sda5 my $dir = "/home"; # get data for /home fs my ($fs_type, $fs_desc, $used, $avail, $fused, $favail) = Filesys::Dis +kSpace::df $dir; # calculate free space in % my $df_free = (($avail) / ($avail+$used)) * 100.0; # display message my $out = sprintf("Disk space on $dir == %0.2f\n",$df_free); print $out; D:\>perl -MO=Deparse,-p temp sub BEGIN { push(@INC, "$ENV{'HOME'}/Filesys-DiskSpace-0.05/lib"); } use warnings; use strict 'refs'; require Filesys::DiskSpace; (my $dir = '/home'); (my($fs_type, $fs_desc, $used, $avail, $fused, $favail) = $dir->Filesy +s::DiskSpace::df); (my $df_free = (($avail / ($avail + $used)) * 100)); (my $out = sprintf("Disk space on $dir == %0.2f\n", $df_free)); print($out); temp syntax OK
as is splain for decoding errors
D:\>echo Can't call method "Filesys::DiskSpace::df" without a package +or object reference at ./try.pl line 27. | splain Can't call method "Filesys::DiskSpace::df" without a package or object reference at ./try.pl line 27. (#1) (F) You used the syntax of a method call, but the slot filled by t +he object reference or package name contains an expression that retur +ns a defined value which is neither an object reference nor a package n +ame. Something like this will reproduce the error: $BADREF = 42; process $BADREF 1,2,3; $BADREF->process(1,2,3);