截取 字符串中的一段

截取 字符串中的一段

1.我想得到这个字符串 $tmp中的最后一段 wered ,除了spilt还有什么其他的好的方法。
  $tmp = '/usr/local/tixna/wered';
那还要看你的最后一段之前的部分长度是不是固定的,是固定的话,可以按位来读。。。
还可用模式匹配,不过split也是用模式匹配来完成的,split很好,很方便,为什么不用split呢?
try this one
$tmp = '/usr/local/tixna/wered';
@ret = $tmp =~ m/(.{17})(.*)$/;
print "$ret[1]\n";

+++ result +++
"wered" will be returned
这种类型的字符串,为什么不用 split 呢?
可以用正则式:
$tmp = '/usr/local/tixna/wered';
$tmp =~ m/(\w+)$/;
print $1;
谢谢!

我知道spilt的方法了,想知道还有没有其他的方法可用。原来正则表达式也可以


QUOTE:
原帖由 zhasm 于 2008-5-22 09:37 发表
可以用正则式:
$tmp = '/usr/local/tixna/wered';
$tmp =~ m/(\w+)$/;
print $1;

为什么这个正则表达式的结果会在 $1里呢 ???
出于可移植性的考虑,应该用:
use File::Basename;
手册:
perldoc File::Basename


QUOTE:
原帖由 flw 于 2008-5-22 10:15 发表
出于可移植性的考虑,应该用:
use File::Basename;
手册:
perldoc File::Basename

如果考虑前面的字符串的不稳定性,根据模式'/*/*/*/$name',老大的建议是最好的,直接取整个字符串的最后一部分-->“$name”的话,可以使用代码:

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl -w
use strict;
use File::Basename ;                           # import no function names

my $name = "/usr/local/bin/perl";
my $basename = basename $name;   # get $name-->'perl'

print $basename,"\n";