Perl – How to get the exact full path to a file in Perl

perl

I only have a file name which is myfile.txt and I am not sure where it is saved. How can I get the exact full path where the file is stored?

I have tried

$string=`ls /abc/def/*/*/*/*/myfile.txt`;

Result: The full path is /abc/def/ghi/jkl/mno/pqr/myfile.txt

I able to get the full path by running shell command using the Perl script above. However, this took very long time to return the path. Is that a way to find the full path of the file by using Perl?

Best Answer

Well, if myfile.txt is actually a relative path to that file, there's a core module sub for that - File::Spec->rel2abs():

  use File::Spec;
  ...
  my $rel_path = 'myfile.txt';
  my $abs_path = File::Spec->rel2abs( $rel_path ) ;

... and if you actually need to search through your directories for that file, there's File::Find... but I would go with shell find / -name myfile.txt -print command probably.

Related Topic