まず、 quotesの使用には細心の注意を払ってください。 which'%Filters_LN_RESS_DIR%\ARC\Options\Pega\CHF_Vega\$$(1212_GV_DATE_LDN)'
の代わりに
"%Filters_LN_RESS_DIR%\ARC\Options\Pega\CHF_Vega\$$(1212_GV_DATE_LDN)"
別の文字列である可能性があることを意味していないかどうかはわかりません
。たとえば、評価された場合、"$$"
は変数を意味します$PROCESS_ID
。
なぞなぞを解こうとして(それについてはわかりません)、文字列を引用した後
my $lastline =
'%Filters_LN_RESS_DIR%\ARC\Options\Pega\CHF_Vega\$$(1212_GV_DATE_LDN)'
別の方法として、次を使用します。
my ($w1, $w2) = $lastline =~ m{ % # the % char at the start
([^%]+) # CAPTURE everything until next %
[^(]+ # scan to the first brace
\( # hit the brace
([^)]+) # CAPTURE everything up to closing brace
}x;
print "$w1\n$w2";
あなたの言葉を抽出します。結果:
Filters_LN_RESS_DIR
1212_GV_DATE_LDN
しかし、値を簡単に置き換えるとはどういう意味ですか。どの値?
補遺
で区切られた「単語」を抽出しましょう'\'
。単純な分割を使用する:
my @words = split /\\/, # use substr to start split after the first '\\'
substr $lastline, index($lastline,'\\');
$$(..)
最後のエントリ (文字列)を削除すると、バックスラッシュの間に単語が表示されます。
pop @words; # remove the last element '$$(..)'
print join "\n", @words; # print the other elements
結果:
ARC
Options
Pega
CHF_Vega
これは grep でうまく機能しますか? と思われる:
my @words = grep /^[^\$%]+$/, split /\\/, $lastline;
と
print join "\n", @words;
また、次のようになります。
ARC
Options
Pega
CHF_Vega
多分それはあなたが求めているものですか?これらをどうしたいですか?
よろしく
rbo