relative absolute path perl

perl

Solution

Use module `File::Spec`. Here an example:

use warnings;
use strict;
use File::Spec;

for ( @ARGV ) { 
    chomp;
    if ( -f $_ ) { 
        printf qq[%s\n], File::Spec->rel2abs( $_ );
    }   
}

Run it like:

perl script.pl mydir/*

And it will print absolute paths of files.

UPDATED with a more efficient program. Thanks to TLP's suggestions.

use warnings;
use strict;
use File::Spec;

for ( @ARGV ) { 
    if ( -f ) {
        print File::Spec->rel2abs( $_ ), "\n";
    }   
}

Problem

Following directory setup: ``` /dira/dirb /dira/dirb/myprog.pl ``` `/dira/dirb/testa/myfilesdir` Contains the following files ``` /dira/dirb/testa/myfilesdir/file1.txt /dira/dirb/testa/myfilesdir/file2.txt ``` Current dir: ``` /dir/dirb ./myprog.pl -p testa/myfilesdir ``` Cycle through files ``` while (my $file_to_proc = readdir(DIR)) { ... $file_to_proc = file1.txt $file_to_proc = file2.txt ``` what I want is ``` $myfile = /dira/dirb/testa/myfilesdir/file1.txt $myfile = /dira/dirb/testa/myfilesdir/file2.txt ``` Tried a few different perl module (CWD rel2abs) but it is using current directory. I can not use current directory because input could be relative or absolute path.

Original source