Perlで変数を連結する別の方法はありますか?
誤って次のコード行を記述しました。
print "$linenumber is: \n" . $linenumber;
そして、その結果、次のような出力が得られました。
22 is:
22
私は期待していました:
$linenumber is:
22
それで私は疑問に思いました。二重引用符で囲まれた$linenumber
を、変数への参照として解釈している必要があります(なんてクールなことでしょう)。
この方法を使用する際の注意点は何ですか?また、これはどのように機能しますか?
二重引用符を使用すると、変数の補間が発生します。したがって、特殊文字はエスケープする必要があります。この場合、$
をエスケープする必要があります。
print "\$linenumber is: \n" . $linenumber;
次のように書き直すことができます。
print "\$linenumber is: \n$linenumber";
文字列の補間を回避するには、一重引用符を使用します。
print '$linenumber is: ' . "\n$linenumber"; # No need to escape `$`
好き .=
演算子メソッド:
#!/usr/bin/Perl
use strict;
use warnings;
my $text .= "... contents ..."; # Append contents to the end of variable $text.
$text .= $text; # Append variable $text contents to variable $text contents.
print $text; # Prints "... contents ...... contents ..."
Perlでは、二重引用符で作成された文字列はすべて補間されるため、変数はすべてその値に置き換えられます。他の多くの言語と同様に、$
を印刷する必要がある場合は、エスケープする必要があります。
print "\$linenumber is:\n$linenumber";
OR
print "\$linenumber is:\n" . $linenumber;
OR
printf "\$linenumber is:\n%s", $linenumber;
コードをから変更した場合
print "$linenumber is: \n" . $linenumber;
に
print '$linenumber is:' . "\n" . $linenumber;
または
print '$linenumber is:' . "\n$linenumber";
印刷されます
$linenumber is:
22
変数名を出力したいときに役立つと思うのは、一重引用符を使用して、内部の変数が値に変換されないようにして、コードを読みやすくすることです。
この応答を作成するときに、次の情報を説明する この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.
これはコミュニティに役立つと思ったので、これを聞いて自分の質問に答えています。他の役立つ回答は大歓迎です!
$
をバックスラッシュして、文字通りに印刷できます。
print "\$linenumber is: \n" . $linenumber;
それはあなたが期待していたものを印刷します。 Perlに変数名を補間させたくない場合は、一重引用符を使用することもできますが、その場合、"\n"
は文字通り補間されます。