in reply to Weird string

Rather than try to juggle files and paths yourself, you could employ the File::Basename and File::Spec core modules to do the heavy lifting. They have the advantage of being portable and well-tested. I have written a script which I think is doing what you are after but I use those modules to manipulate the paths and I use regular expressions with captures (see perlretut, perlre and perlreref) rather than your split.

use strict; use warnings; use Cwd qw{ abs_path }; use File::Basename; use File::Spec; my $scriptPath = abs_path( $0 ); my $path = ( fileparse( $scriptPath ) )[ 1 ]; my $configFileName = File::Spec->catfile( $path, q{spw750353.ini} ); open my $configFH, q{<}, $configFileName or die qq{open: < $configFileName: $!\n}; my $fileFromConfig = q{}; my $pathFromConfig = q{}; while( <$configFH> ) { if( m{^myfile=(.+)} ) { $fileFromConfig = $1; } elsif( m{^path=(.+)} ) { $pathFromConfig = $1; } else { warn qq{$_ : line not recognised\n}; } } close $configFH or die qq{close: < $configFileName: $!\n}; my $fullPath = File::Spec->catfile( $pathFromConfig, $fileFromConfig ); print qq{$fullPath\n};

Here is the .ini file, shown both from the Cygwin (*nix-like) environment and from the command prompt under Windows XP.

$ cat spw750353.ini myfile=bbbbbbb.txt path=aaaaaaaaaaaaaaa $
C:\cygwin\home\johngg\perl\Monks>type spw750353.ini myfile=bbbbbbb.txt path=aaaaaaaaaaaaaaa C:\cygwin\home\johngg\perl\Monks>

Here is the script running unaltered in both environments.

$ ./spw750353 aaaaaaaaaaaaaaa/bbbbbbb.txt $
C:\cygwin\home\johngg\perl\Monks>perl spw750353 aaaaaaaaaaaaaaa\bbbbbbb.txt C:\cygwin\home\johngg\perl\Monks>

Note how the modules use the path separator appropriate to the environment without programmer intervention.

I hope this is helpful.

Cheers,

JohnGG

Replies are listed 'Best First'.
Re^2: Weird string
by AoZus (Initiate) on Mar 16, 2009 at 00:54 UTC
    Hi all... Its working now... Thank you! =)