in reply to How to get full path name in windows?
Am adding just a "kobo" suggestion, using your OP and the modification provided by ww to your script.
Anonymous Monk says:
"..D:\Prog\Perls is the location where I execute my code.."
In that case, you can get your desired result using chdir. {Updated}
Like so:
#!/usr/bin/perl use warnings; use strict; use File::Spec; my $dirname = "C:\\Users\\Me\\Desktop\\Cluster1"; my @file_to_use_later; ## for use later chdir $dirname; ## add this to OP script opendir DIR, $dirname or die "can't open directory: $!"; my @FILES = readdir(DIR); foreach my $FILE (@FILES) { my $fil_path = File::Spec->rel2abs($FILE); print "File path:", $fil_path, $/; push @file_to_use_later, $fil_path if -f $fil_path; ## check fi +les contents later } closedir DIR or die "can't close directory: $!"; ## test the files stored in the array variable later for my $filename (@file_to_use_later) { print $filename, $/; open my $fh, '<', $filename or die "can't open: $!"; while (<$fh>) { chomp; print $_, $/; } close $fh or die "can't close file:$!"; }
Also, take note of this important info from File::Spec documentation about the "rel2abs".
rel2abs() Converts a relative path to an absolute path.
If $base is not present or '', then Cwd is used. If $base is relative, then it is converted to absolute form using rel2abs(). This means that it is taken to be relative to Cwd.$abs_path = File::Spec->rel2abs( $path ) ; $abs_path = File::Spec->rel2abs( $path, $base ) ;
On systems with the concept of volume, if $path and $base appear to be on two different volumes, we will not attempt to resolve the two paths, and we will instead simply return $path .
The above explain, why you are getting this:
instead of thisD:\Prog\Perls\doc.txt D:\Prog\Perls\volt.txt D:\Prog\Perls\holiday.txt
Update:C:\Users\Me\Desktop\Cluster1\doc.txt C:\Users\Me\Desktop\Cluster1\volt.txt C:\Users\Me\Desktop\Cluster1\holiday.txt
You may also want to look into the module Path::Class and it's "cousins".
Path::Class 'just' is a "wrapper" for File::Spec.
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me
In Section
Seekers of Perl Wisdom