I've done this several ways, depending on my mood.
1.
@path = split(/\//, $file);
$filename = $path[$#path];
2.
$filename = $1 if ($file =~ m|/([^/]+)$|);
3.
use File::Basename;
$filename = basename($file);
1 uses split and $#array, which can be nasty if someone set $[ to something
other than 0, and not very portable
2 Not very portable
3 best method
-----Original Message-----
From: Sandor W. Sklar [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, April 24, 2001 9:52 AM
To: [EMAIL PROTECTED]
Subject: pulling out part of a /path/to/a/file
Hi, folks ...
I'm generating a list of files (from a find subroutine) and putting
them in an array. The list looks like ...
/home4/dsadmin/7790/DocuShare/documents/b003/File-11523.1
/home4/dsadmin/7790/DocuShare/documents/b003/File-11587.1
/home4/dsadmin/7790/DocuShare/documents/b003/File-11651.1
/home4/dsadmin/7790/DocuShare/documents/b004/File-1156/html/main.htm
/home4/dsadmin/7790/DocuShare/documents/b004/File-1604/html/main.htm
(... a small sample)
and I'm trying to get just the "File-nnnn" part of each line; some
lines that I am matching against will have a trailing slash, with
additional path info that I'm not interested in; other lines will
have a period and a number following, which I am also not interested
in.
Perhaps the File::Basename module would do what I want, but I can't
get my mind around its documentation. I thought of using split on
each line (splitting on the "/", and then looking each element of the
array returned), but that seems, well, stupid. I'm sure that there
is some really simple magic here; I just don't see it. Can someone
enlighten me please?
Thanks,
-s-
--
sandor w. sklar
unix systems administrator
stanford university itss-css