2012-03-27 12 views
0

が、私は文字列変数にメモリ群特殊変数を評価したい:perlを使って変数にメモリグループを評価するには? perlスクリプトで

my $string="3-4"; 
my $cal='first is $1;second is $2'; 
my $regex='^(.)-(.)$'; 

if($string=~ $regex){ 
    print $cal; 
     #print "first is $1;second is $2"; 
} 

私が印刷したい:「最初は3で、2番目は4である」(第2の印刷のように)。

私のサンプルでは、​​特殊変数は2つしかありませんが、$cal$regexがデータベースに格納されているため、特殊文字の数を事前に決定することはできません。

$calの文字列を評価するにはどうすればよいですか(PHPのevalなど)?

答えて

0
print eval "\"$cal\"","\n"; 

のようなものを試してみてください内側のエスケープされた引用符は内挿用です

のような印刷セグメントを組み合わせることができます
+0

ありがとうございました。それは完全に動作します! – user1296757

1

マッチを挿入するパターンを定義したいと思うように聞こえるのですか?これにはprintfを使用できます。

my $string="3-4"; 
my $cal="%s %s\n"; 
if($string=~ '^(.)-(.)$'){ 
    printf($cal, $1, $2); 
} 

あなたは、単に一緒にすべての試合に参加したい、とあなたがあるかもしれませんどのように多くのわからない場合は、「外dblquotesはevalのためのもので、この

my @matches=$string=~ '^(.)-(.)$'; 
if (scalar(@matches)) 
{ 
    print join(' ',@matches); 
} 
+0

Paulに感謝しますが、2枚目のプリントではすでにそうしています。 – user1296757

+0

私はそれがあなたの質問だと思った - 最初のプリントを作る方法は、2番目のプリントをする方法。とにかくオリジナルに関係する方法を明確にするために私の答えを編集しました。出力に従うパターンが$ calで表示されます –

+0

あなたの答えを理解していますが、いくつの特殊変数があるかも知りません。 $ calで使用する – user1296757

関連する問題