7

Perlで変数を連結する別の方法はありますか?

誤って次のコード行を書きました。

print "$linenumber is: \n" . $linenumber;

その結果、次のような出力が得られました。

22 is:
22

私は期待していました:

$linenumber is:
22

それで、私は疑問に思いました。二重引用符内の を変数への参照として解釈する必要があり$linenumberます (すばらしい!)。

この方法を使用する際の注意事項とその仕組みは?

4

6 に答える 6

13

二重引用符を使用すると、変数補間が発生します。したがって、特殊文字はエスケープする必要があります。この場合、次をエスケープする必要があります$

print "\$linenumber is: \n" . $linenumber;

次のように書き換えることができます。

print "\$linenumber is: \n$linenumber";

文字列の補間を避けるには、一重引用符を使用します。

print '$linenumber is: ' . "\n$linenumber";  # No need to escape `$`
于 2012-08-02T17:10:50.490 に答える
3

Perl では、二重引用符で構築された文字列は補間されるため、変数はその値に置き換えられます。を印刷する必要がある場合、他の多くの言語と同様に$、エスケープする必要があります。

print "\$linenumber is:\n$linenumber";

また

print "\$linenumber is:\n" . $linenumber;

また

printf "\$linenumber is:\n%s", $linenumber;

スカラー補間

于 2012-08-02T17:18:04.457 に答える
2

コードを変更した場合

print "$linenumber is: \n" . $linenumber;

print '$linenumber is:' . "\n" . $linenumber;

また

print '$linenumber is:' . "\n$linenumber";

それは印刷されます

$linenumber is:
22

変数名を出力したいときに役立つと思うのは、一重引用符を使用して、その中の変数が値に変換されないようにして、コードを読みやすくすることです。

于 2012-08-02T17:20:11.960 に答える
1

をバックスラッシュし$て文字どおりに印刷できます。

print "\$linenumber is: \n" . $linenumber;

それはあなたが期待していたものを印刷します。Perl に変数名を補間させたくない場合は、単一引用符を使用することもできますが、その場合は"\n"文字どおりに補間されます。

于 2012-08-02T17:09:54.480 に答える
1

この回答を作成する際に、次の情報を説明するこの Web ページを見つけました。

###################################################
#Note that when you have double quoted strings, you don't always need to concatenate. Observe this sample:

#!/usr/bin/perl

$a='Big ';
$b='Macs';
print 'I like to eat ' . $a . $b;

#This prints out:
#  I like to eat Big Macs

###################################################

#If we had used double quotes, we could have accomplished the same thing like this:

#!/usr/bin/perl

$a='Big ';
$b='Macs';
print "I like to eat $a $b";

#Printing this:
#  I like to eat Big Macs
#without having to use the concatenating operator (.).

###################################################

#Remember that single quotes do not interpret, so had you tried that method with single quotes, like this:


#!/usr/bin/perl

$a='Big ';
$b='Macs';
print 'I like to eat $a $b';
#Your result would have been:
#  I like to eat $a $b
#Which don't taste anywhere near as good.

これはコミュニティに役立つと思ったので、これを尋ねて自分の質問に答えます。他の役立つ回答は大歓迎です!

于 2012-08-02T17:08:08.590 に答える