3

私はこのようなことができると思います:

print STDOUT (split /\./, 'www.stackoverflow.com')[1];

「stackoverflow」が出力されます。ただし、これは次のとおりです。

print +(split /\./, 'www.stackoverflow.com')[1];

同じことを行います。これは次のとおりです。

print (split /\./, 'www.stackoverflow.com')[1];

構文エラーです。では、ここで何が起こっているのでしょうか。私は常に、単項プラス記号がどのような状況でも何もしないことを理解していました。また、「print FILEHANDLE EXPR」が機能する場合、「print EXPR」も常に同様に機能すると想像していたでしょう。洞察はありますか?

4

2 に答える 2

16

警告が有効になっていません。このprint(...)[1]場合、括弧のセットは関数構文の一部と見なされます。

print(...)は、C:\ Temp\t.plの4行目で関数として解釈されます。

から、perldoc -f print

また、対応する右括弧で印刷の引数を終了する場合を除いて、printキーワードの後に​​左括弧を付けないように注意し+ てください。すべての引数の前後にaを挿入するか、括弧を入れてください。

このPerlコードで改行が出力されないのはなぜですか?も参照してください。

于 2009-11-05T20:08:56.840 に答える