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