[英]Perl regex extracting a match using braces
我测试了以下代码
#! /usr/bin/perl
use strict;
use English;
#this code extracts the current scripts filename
#by removing the path from the filepath
my $Script_Name = $PROGRAM_NAME;
${Script_Name} =~ s/^.*\\//; #windows path
#${Script_Name} =~ s/^.*\///; #Unix based path
print $Script_Name;
而且我不明白为什么这些花括号在不使用/ r修饰符的情况下提取匹配项。 谁能解释为什么以及如何运作,或者向我介绍一些文档?
你有点困惑!
括号没有区别。 ${Script_Name}
与$Script_Name
相同。
您的代码首先将脚本文件的整个路径从$PROGRAM_NAME
$Script_Name
到$Script_Name
。
然后替换操作将删除直到最后一个反斜杠(包括最后一个反斜杠)的所有内容,仅保留文件名。
如果您想修改一个字符串并将修改的结果放入另一个字符串,则将使用/r
修饰符,因此您可以一步编写代码,如下所示:
$Script_Name = $PROGRAM_NAME=~ s/^.*\\//r
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.