perl如何截取文件名

perl如何截取文件名

$str="D:\test\aaa.txt"

如何不使用模块得到  "aaa.txt"
split or re
正则
basename
$str="D:\test\aaa.txt";

@temp=split("\\",$str);

报错:

/\/: trailing \ in regexp...



咋回事啊?
$str='D:\test\aaa.txt';

@temp=split m/\\/,$str;

str赋值不能用双引号不然里面的\会转义。。。
$str="D:\test\aaa.txt";

这个路径就不对\t是tab符。$str="D:\\test\\aaa.txt";
$str='D:\test\aaa.txt';

$str=~ m/([^\\]+)$/;
$name = $1;
print        "$name";

也可以这样直接截名字


QUOTE:
原帖由 spicemodel 于 2008-9-23 09:57 发表
$str="D:\test\aaa.txt"

如何不使用模块得到  "aaa.txt"

Hi,

Three basic way to do that:
1. split:
perl -le '$p=q(D:\dir\subdir\file.txt); $fn=(split /\\/, $p)[-1];print $fn'

2. pattern match:
perl -le '$p=q(D:\dir\subdir\file.txt); ($fn)=$p=~/([^\\]+)$/;print $fn'

3. rindex() + substr():
perl -le '$p=q(D:\dir\subdir\file.txt); $pos=rindex($p, "\\"); print $pos; print substr($p, $pos+1);'
perl -le '$p=q(D:\dir\subdir\file.txt);@a=split(/\\/,$p);print $a[3];'