繁体   English   中英

Perl正则表达式使用花括号提取匹配项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM