http://www.perlmonks.org?node_id=623540


in reply to Unable to untar

#!/usr/bin/perl use warnings; use FindBin; $distrib_dir = $FindBin::Bin; print "$distrib_dir"; sub RemoveWhiteSpaces; my ( ${birt_dir}, ${distrib_dir}, ${hostname} ); $birt_dir = "/usr/local/web/acc/WAS/install/61x/lib/app/birt"; $tar_dir="${distrib_dir}/../jclass/cfi_mss_srvcs/was6x-config"; print "$tar_dir"; $hostname=`uname -n`; $hostname = RemoveWhiteSpaces( ${hostname} ); if (! -d ${birt_dir} ) { die "The target directory /usr/local/web/acc/WAS/install/61x/lib/a +pp/birt does not exist, please create the directory as webspher and t +ry again"; } if ( (${hostname} eq "agaisg66") || (${hostname} eq "svag0035") || ($ +{hostname} eq "svag1103") ) { chdir "${birt_dir}"; print `pwd`; `cp -R "${distrib_dir}"/../jclass/cfi_mss_srvcs/BIRT/* .`; `tar xvf ${distrib_dir}/../jclass/cfi_mss_srvcs/was6x-config/lib-a +pp-CFI_Reporting.tar`; } else { print "You are trying to deploy the code in the wrong box"; }
In the above code which is actually given in the node, you are assigning a value to $distrib_dir = $FindBin::Bin; then you are declaring the saame variable as follows my ( ${birt_dir}, ${distrib_dir}, ${hostname} ); which will make the $distrib_dir as empty. Because I could see the you are using $distrib_dir in getting the value of $tar_dir.