簡體   English   中英

為一系列Perl參數轉義'$'

[英]Escaping '$' for a range of Perl arguments

我想做相當於:

for (int i = 0; i < 10; i++)
{
   arg[i] = arg[i].Replace("$", @"\$");
}

在Perl中。 在Perl中會是什么樣?

for ( @arg ) {
    s/\$/\\\$/g;
}

應該做到的。 如果您堅持只處理前10個參數,請將第一行更改為:

for ( @arg[0..9] ) {

如果只是美元符號$您希望逃脫,那么我將使用depesz的解決方案進行簡單的替換。 但是,perl具有內置功能來處理轉義的元字符quotemeta

@arg = map quotemeta, @arg;

請注意,這會轉義所有元字符,而這可能不是您想要的。

在Perl中,可以使用map將一個列表轉換為另一個列表。 所以你可以說

@arg = map { s{\$}{\\\$}g; $_; } @arg;

您還可以使用for的后綴形式,因為默認循環變量是原始值的別名。

s{\$}{\\\$}g for @arg;

這等效於:

foreach my $thing( @arg ) { 
    $thing =~ s{\$}{\\\$}g;
}

如果您想變得冗長,可以執行C風格的循環:

for ( my $i = 0; $i < @arg; $i++ ) { 
    $arg[$i] =~ s{\$}{\\\$}g;
}

...但這並不是特別的Perlish。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM