in reply to Turning pathname into package name in a portable way

use File::Spec; my ($volume, $dirstring, $file) = File::Spec->splitpath($pathname); my @dirs = File::Spec->splitdir($dirstring); # Unfortunately, splitpath's doc says: # The directory portion may or may not be returned with a trailing + '/'. # # Which 'may or may not' give us an extra 'null' member of # @dirs, because splitdir allows null directory names. # # Hence this next line, purely for cleanup: pop @dirs if ($dirs[-1] eq ''); $file =~ s/\.pm$//; my $package = join('::',@dirs,$file);

The intelligent reader will judge for himself. Without examining the facts fully and fairly, there is no way of knowing whether vox populi is really vox dei, or merely vox asinorum. -- Cyrus H. Gordon

Replies are listed 'Best First'.
Re^2: Turning pathname into package name in a portable way
by itub (Priest) on Oct 15, 2005 at 22:30 UTC
    Thanks. I was looking for something like splitdir, but for some reason I was looking in File::Basename ... :)
      I often was confused by that as well. I would mix up File::Basename, File::stat, and File::Spec, there should probably be a man/perldoc page that lists all of the modules that come packaged with perl, along with a one line desc of their task. Much like a info coreutils on debian (which I still find extremly usefull.)


      Evan Carroll
      www.EvanCarroll.com