由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
_Xiyu版 - 精通perl的高手帮我看一个小问题
相关主题
硬工碰到软问题今天的校园面试
问一个关于批处理的问题,谢了! (转载)问个amazon的题,关于url的提取
perl: how to get the filename from the full path nameamazon 找电话号码题一问
请教一个设计test case的问题明天要面试了今天还不知道职位是神马
G家已挂 分享一下面经今天onsite面试的小题,有兴趣的做做玩
王寅的blog消失了?说自己会多少语言哪?
HELP: 怎样用SCRIPT实现如下功能?how to invoke cgi in html?
perl出错求教perl有什么独特之处?
相关话题的讨论汇总
话题: jkt话题: frz1话题: filename话题: perl话题: rcbgfctls
1 (共1页)
e****e
发帖数: 877
1
我有一个input变量:
/nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1/rcbgfctls_frz1_ww43.3
我需要输出:
$A = /nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1
$B = rcbgfctls
把这个path从最后一个"/"分开,前面的东西给$A。
最后的字符串从第一个"_"分开,我只要第一个r开头的部分给$B。
前面的path可能有很多个"/",后面的东西也可能有很多的"_"
怎么写一个小perl?
d*****d
发帖数: 2449
2
不太会perl,但你的要求用regular expression很好解决,因为它是贪婪的,所以
^.*/ will match the $A you wanted (i.e. find the last ‘/')
so use "s/\(.*\)\/.*/\1/" will get $A
use "s/.*\/\(.*\)/\1/" will give you the rest part.
and for the rest part, simply use "s/_.*//" to replace everything behind '_'
to empty.

【在 e****e 的大作中提到】
: 我有一个input变量:
: /nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1/rcbgfctls_frz1_ww43.3
: 我需要输出:
: $A = /nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1
: $B = rcbgfctls
: 把这个path从最后一个"/"分开,前面的东西给$A。
: 最后的字符串从第一个"_"分开,我只要第一个r开头的部分给$B。
: 前面的path可能有很多个"/",后面的东西也可能有很多的"_"
: 怎么写一个小perl?

f***o
发帖数: 92
3
#!/usr/bin/perl


use File::Basename;


my $filename = "/nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1/rcbgfctls_frz1_ww43.3
";


print dirname($filename) . "\n";
split(/_/, basename($filename));
print $_[0] . "\n";

【在 e****e 的大作中提到】
: 我有一个input变量:
: /nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1/rcbgfctls_frz1_ww43.3
: 我需要输出:
: $A = /nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1
: $B = rcbgfctls
: 把这个path从最后一个"/"分开,前面的东西给$A。
: 最后的字符串从第一个"_"分开,我只要第一个r开头的部分给$B。
: 前面的path可能有很多个"/",后面的东西也可能有很多的"_"
: 怎么写一个小perl?

e****e
发帖数: 877
4
it works.
thanks.
I need to google this to understand what functions you used here.



.3


【在 f***o 的大作中提到】
: #!/usr/bin/perl
:
:
: use File::Basename;
:
:
: my $filename = "/nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1/rcbgfctls_frz1_ww43.3
: ";
:
:

e****e
发帖数: 877
5
你这个pattern match也蛮cool的,我就是不知道如何match到最后一个slash.

_'

【在 d*****d 的大作中提到】
: 不太会perl,但你的要求用regular expression很好解决,因为它是贪婪的,所以
: ^.*/ will match the $A you wanted (i.e. find the last ‘/')
: so use "s/\(.*\)\/.*/\1/" will get $A
: use "s/.*\/\(.*\)/\1/" will give you the rest part.
: and for the rest part, simply use "s/_.*//" to replace everything behind '_'
: to empty.

u****u
发帖数: 2308
6
try this:
if ($input =~ /(.*)\/([^_]*)/) {
$A = $1;
$B = $2;
}

【在 e****e 的大作中提到】
: 我有一个input变量:
: /nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1/rcbgfctls_frz1_ww43.3
: 我需要输出:
: $A = /nfs/sc/proj/jkt/jkt088/jmeng/jkt/FRZ1
: $B = rcbgfctls
: 把这个path从最后一个"/"分开,前面的东西给$A。
: 最后的字符串从第一个"_"分开,我只要第一个r开头的部分给$B。
: 前面的path可能有很多个"/",后面的东西也可能有很多的"_"
: 怎么写一个小perl?

e****e
发帖数: 877
7
多谢了,这个简单好用

【在 u****u 的大作中提到】
: try this:
: if ($input =~ /(.*)\/([^_]*)/) {
: $A = $1;
: $B = $2;
: }

1 (共1页)
相关主题
perl有什么独特之处?G家已挂 分享一下面经
Perl问题请教!!!王寅的blog消失了?
perl能不能一次把一个str中的a替换成x,b替换成y?HELP: 怎样用SCRIPT实现如下功能?
unix下运行perl输出.txt文件perl出错求教
硬工碰到软问题今天的校园面试
问一个关于批处理的问题,谢了! (转载)问个amazon的题,关于url的提取
perl: how to get the filename from the full path nameamazon 找电话号码题一问
请教一个设计test case的问题明天要面试了今天还不知道职位是神马
相关话题的讨论汇总
话题: jkt话题: frz1话题: filename话题: perl话题: rcbgfctls