2016-05-13 11 views

答えて

7

""および''は空の文字列に評価されます。

スカラーコンテキストでは、()undefと評価されます。慣習的には、()の代わりにundefを使用します。これがスカラーコンテキストで評価されることがわかっている場合です。

リストの文脈では、()は何もしません。これは、式が期待されるプレースホルダとして使用されます。概念的には、空のリストと見なされます。


スカラーに割り当てると、その値がスカラーにコピーされます。

配列に割り当てるとき、配列の内容は割り当てられたスカラーで置き換えられます。

ハッシュに割り当てるとき、割り当てられるリストは、キーと値のペアのリストであると予想されます。ハッシュの内容は、割り当てられたキーと値のペアに置き換えられます。 ...そう、あなたの岩

my $scalarVar = "";  # Creates a scalar containing an empty string. 
my $scalarVar = '';  # Creates a scalar containing an empty string. 
my $scalarVar = undef; # Creates an undefined scalar. Uselessly noisy code. 
my $scalarVar =();  # Creates an undefined scalar. Uselessly noisy and weird code. 
my $scalarVar;   # Creates an undefined scalar. 

my @arrayVar = "";  # Creates an array containing one scalar (an empty string). 
my @arrayVar = '';  # Creates an array containing one scalar (an empty string). 
my @arrayVar = undef; # Creates an array containing one scalar (undefined). 
my @arrayVar =();  # Creates an empty array. Uselessly noisy code. 
my @arrayVar;   # Creates an empty array. 

my %hashVar = "";  # Warns. Makes no sense since a list of k-v pairs expected. 
my %hashVar = '';  # Warns. Makes no sense since a list of k-v pairs expected. 
my %hashVar = undef; # Warns twice. Makes no sense since a list of k-v pairs expected. 
my %hashVar =();  # Creates an empty hash. Uselessly noisy code. 
my %hashVar;   # Creates an empty hash. 
+0

これはありがとうございました。 – ssr1012

5

""および''は同等である。 ''は一部のフォントで"のように見え、読者を混乱させる可能性があるため、空の文字列にはq()を使用する人がいます。

my $scalarVar =()my $scalarVarは同等です。my $scalarVar = undefをグループに追加できます。私はそれが最短のものであるので、2番目のオプションを好むだろう。

my @arrayVar = ''は、my @arrayVar = ('')と同じです。つまり、1つの要素、空の文字列を含む配列を作成します。 my @arrayVar =()my @arrayVarは同じですが、空の配列が作成されます。

ハッシュの場合、my %hashVarmy %hashVar =()は同等です(前者が好きです)。ハッシュへの空の文字列を割り当てると、警告発する:

Odd number of elements in hash assignment at ... 

および

my %hashVar = ('' => undef); 

すなわち、それは空の文字列のキーの下にはundef値を格納することと等価です。

+0

おかげで作成されたとき


スカラは未定義であり、配列やハッシュが空の状態で作成されます。 – ssr1012

関連する問題