I am doing a Perl script to attach another variable to the end of the current working directory, but I am having problems with using the module.
If I run getcwd from D:\, the value returned is
D:/ (with forward slash)
If I run getcwd from D:\Temp\, the value returned is
D:/temp (without forward slash)
This makes the situation quite tricky because if I simply do:
use Cwd;
$ProjectName = "Project"; # This is a variable supplied by the user
$directory = getcwd().$ProjectName."\/";
print $directory."\n";
I will end up with either
D:/Project (correct)
or
D:/TempProject (instead of D:/Temp/Project)
Is this a feature in Cwd? It does not seem to be in the documentation.
I have thought up the following code to solve this issue. It takes 3 lines to do it. Can any of you see a more concise way?
use Cwd;
$ProjectName = "Project"; # This is a variable supplied by the user
$directory = getcwd();
$directory =~ s/(.+?)([^\\\/])$/$1$2\//g; # Append "/" if not terminating with forward/back slash
$directory .= $ProjectName."\/";
print $directory."\n";
Use File::Spec instead of making your own path manipulation routines.
use Cwd;
use File::Spec;
$ProjectName = "Project";
$cwd = getcwd();
$directory = File::Spec->catdir($cwd, $ProjectName);
print "$directory\n";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With