On Thu, May 09, 2002 at 11:22:07AM -0400, Shishir K. Singh wrote:
> a)Is there any function that returns the file path format depending on the
> OS name?
Not that I know of. There is, however, a couple of modules for dealing with
paths.
First, there's File::Basename for splitting off the directory, file, and
extension portions of a path. It's pretty easy to use.
Next, there's File::Spec. It's a whole suite of class methods for splitting
up paths into whatever units your heart desires; drive letter, directory,
filename, etc. Of course, with this added capability comes added
complexity.
> b) How can I write this split by using a variable @elements = split
> (/\\/,$string); I want to pass a variable instead of hard coding "\\"
> in the split.
If you want to be portable to more than just Windows- and Unix-based
filesystems you can't. On some OSs splitting paths is not a simple matter
of finding the seperator character.
Also, if you were to use your split on Unix (splitting on /) you'd get
incorrect results. The path /etc/passwd would be split up into ("", "etc",
"passwd").
To split your path as portably as possible:
use File::Spec;
my($volume, $dir, $file) = File::Spec->splitpath($string);
my @dir = File::Spec->splitdir($dir);
>From that, $volume contains your volume name (such as C: on Windows), @dir
your directory elements, and $file the filename.
See perldoc File::Spec for more information. For education on how other
operating systems deal with paths, see perldoc File::Spec::Mac and perldoc
File::Spec::VMS.
Michael
--
Administrator www.shoebox.net
Programmer, System Administrator www.gallanttech.com
--
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]