Windows 下切割带路径的字符串

Windows 下切割带路径的字符串

字符串:
e:\src path\test\a.txt
e:\src path\soft\b.txt
e:\src path\data\c.txt
e:\src path\data\config\d.txt

需要将前面的目录e:\src path 去掉,怎么老是不成功?

我用的是:
my $str="e:\src path"
$line=~s/$str//g;

路径e:\src path 不是固定的一个目录,可能会随时变的,所以需要使用变量替代。

请大家帮忙看看,在LINUX好象可以,但是WINDOWS下就不行, ACTIVEPERL

quotemeta()
my $str="e:\src path"
红字部分发生了转义
你用单引号就好了,或者把\换成\\


QUOTE:
原帖由 royalzhang 于 2007-12-11 12:07 发表
my $str="e:\src path"
红字部分发生了转义
你用单引号就好了,或者把\换成\\

两个方案貌似都不成.
试试my $str=quotemeta('e:\src path');


QUOTE:
原帖由 yuguanglou 于 2007-12-11 09:34 发表
字符串:
e:\src path\test\a.txt
e:\src path\soft\b.txt
e:\src path\data\c.txt
e:\src path\data\config\d.txt

需要将前面的目录e:\src path 去掉,怎么老是不成功?

我用的是:
my $str="e:\sr ...

老生常谈了...
$line=~s/\Q$str\E//g;

或者substr
楼主如果是想固定删除前两级目录的话可以考虑这个,不需要用变量,以“\”分隔,删除前两个域即可。
  1 #!/usr/bin/perl -w
  2 use strict;
  3
  4 my $line = 'e:\src path\test\a.txt';
  5
  6 $line =~ s/^((.*?)\\){2}?//;
  7 print $line, "\n";
ps 一下,GOOGLE兄用的什么编辑器,行号也可以拷贝过来?


[Copy to clipboard] [ - ]
CODE:
my $str='e:\src path';
$line=~s/\Q$str\E//g;

关键在于单引号和\Q..\E无替换的使用


QUOTE:
原帖由 __lxmxn__ 于 2007-12-11 15:26 发表
ps 一下,GOOGLE兄用的什么编辑器,行号也可以拷贝过来?

vim


QUOTE:
原帖由 G00GLE 于 2007-12-11 18:15 发表

vim

vim 怎么把行号弄进代码里面来?
用什么命令呢?