in reply to Re^5: Manipulating directory paths
in thread Manipulating directory paths

$ver_name is a parameter that I am passing to this script. And I want the script to execute in one way if the $ver_name is passed and if it is not passed in an another way.
And that's why I am checking to see if $ver_name exists or not.

Also I did try other manipulations with the if-then-else statements to check if $ver_name exists but I was having many problems and that's why I resorted to using (?:)

In Case 2:
I am expecting graph_dir to evaluate to = /home/user/phase/dir1/abinitio/run

but instead I am getting /home/user/phase/dir1//abinitio/run

Replies are listed 'Best First'.
Re^7: Manipulating directory paths
by ikegami (Patriarch) on Sep 13, 2007 at 18:47 UTC

    $ver_name is a parameter that I am passing to this script. And I want the script to execute in one way if the $ver_name is passed and if it is not passed in an another way.

    You'd normally check the length of @ARGV (for arguments passed to a script) or @_ (for arguments passed to a function), but defined will do nicely here. defined tells its caller if a variable holds a value other than undef.

    my $replace = '/abinitio/run'; if (defined($ver_name)) { $replace = "/$ver_name" . $replace; } (my $graph_dir = $before) =~ s{ /log/ .* \z }{$replace}xs;

    but instead I am getting /home/user/phase/dir1//abinitio/run

    Not with the code and the inputs you provided.
    Not with the code I provided and the inputs you provided.

    Update:
    Changed
    if (defined($replace)) {
    to
    if (defined($ver_name)) {

      I tried what you suggested but still I a getting the double slashes //.

        There was a typo in the latest version that gave that error. Fixed.