in reply to using basename on a list of filesnames

You are in a loop of filenames. Try

my $basename = basename ($file, ".psd"); print "$basename\n";


The way forward always starts with a minimal test.

Replies are listed 'Best First'.
Re^2: using basename on a list of filesnames
by flieckster (Scribe) on Nov 13, 2019 at 02:08 UTC
    that didn't seem to work
    Use of uninitialized value $_[0] in substitution (s///) at /System/Lib +rary/Perl/5.18/File/Basename.pm line 341, <GEN0> line 10. fileparse(): need a valid pathname
    i also tried.
    my $basename = basename (@TIFFfolder_list, ".psd"); print "$basename\n";
    that only gave one filename output from the array.

      Did you add a debug print statement inside the loop to see what you are passing to basename() in $file? It really works:

      $ perl -MFile::Basename -wE 'say basename("foo.psd",".psd")' foo
      ... but passing an undefined value does not:
      $ perl -MFile::Basename -wE 'say basename(undef,".psd")' Use of uninitialized value $_[0] in substitution (s///) at /Users/1nic +kt/perl5/perlbrew/perls/perl-5.30.0/lib/5.30.0/File/Basename.pm line +341. fileparse(): need a valid pathname at -e line 1.


      The way forward always starts with a minimal test.