Chinaunix

标题: Perl 截取需要字符串 [打印本页]

作者: 刚子在学习    时间: 2015-11-12 08:51
标题: Perl 截取需要字符串
我想从一个文件目录中截取文件名称 但是试了好多办法都没有成功,
从/appdata/appuser/liuyong/date/hubei.xlsx 中截取 hubei这个名称

我的方法是:
my $name = (split /\s+$\/\s+|\s+\./, $path)[1];
print $name,"\n";

if ($path =~ /\/\s+([\d\.]+)/)
{
    print $1,"\n";
}
但是截取不出来

问问各位有什么好的办法没?
作者: jason680    时间: 2015-11-12 09:02
回复 1# 刚子在学习

掐头去尾

use strict;
use warnings;

my $path = "/appdata/appuser/liuyong/date/hubei.xlsx";

my $name = $path;
$name =~  s|.*/||;
$name =~ s/[.].*//;
print "$name\n";

   
作者: 刚子在学习    时间: 2015-11-12 09:40
回复 2# jason680


    嗯 这样就简单多了!我开始是陷入一个思维误区,就想着一次将需要的东西截取出来,结果复杂了,
分两次截取就简单多了 ,谢谢了!
作者: zhlong8    时间: 2015-11-12 09:53
Perl 自带的模块 File::Basename 也很合适 http://perldoc.perl.org/File/Basename.html
作者: koler    时间: 2015-11-13 15:04
这样也可以。
use strict;
my $aa ="/appdata/appuser/liuyong/date/hubei.xlsx";
$aa =~ /(.*)\/(\w+).\w+$/ ;
print $2;
作者: sunzhiguolu    时间: 2015-11-13 16:11
本帖最后由 sunzhiguolu 于 2015-11-13 16:18 编辑

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my $sPath = "/appdata/appuser/liuyong/date/hubei.xlsx";
  5. $sPath =~ m{([^/]+)(?=\.)};
  6. print "$1\n";
复制代码

作者: sunzhiguolu    时间: 2015-11-13 18:29
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my $sPath = "/appdata/appuser/liuyong/date/hubei.xlsx";
  5. my $sName;
  6. while ($sPath =~ m{(?<=/)([^/.]+)}g){
  7.         $sName = $1;
  8. }
  9. print "$sName\n";
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2