in reply to regular express problem

Is your question the text of the comment: "#what two s and three #mean?"?

That's a substitution operator. Normally it would look like s/regexp/replace/. But you can use other delimiters if that makes the regexp easier to read. The reason that this particular regexp uses # instead of /, is because the re itself has an embeded / character in it, and the author chose an alternate delimiter instead of escaping the /.

The trailing 's' tells the regexp engine that '\n' should be treated like any other character, and matched by the '.' metacharacter.

That's the mechanics. Now for the implementation...

That regexp will place into $basename whatever is left after removing as much text as possible before reaching the final '/' character. It's not really a foolproof solution toward getting at the basename of a file. A better solution is to use the File::Basename module like this:

use File::Basename; my( $old, $new ) = @ARGV; if ( -d $new ) { $new .= "/" . basename( $old ); }


Dave