Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

print()とカッコと三項演算子

2秒くらいはまったのでメモ。


これはok。

print 1 == 1 ? 'ok' : 'ng'; #=> ok

これもok。

print 'foo' eq 'foo' ? 'ok' : 'ng'; #=> ok

これはng、というか1。

print ('foo' eq 'foo') ? 'ok' : 'ng'; #=> 1

1は「eq」の返却値の「true」。
なのでこれと同義。

(print 'foo' eq 'foo') ? 'ok' : 'ng'; #=> 1

ちゃんとやるなら、こう。

print (('foo' eq 'foo') ? 'ok' : 'ng'); #=> ok
print  ('foo' eq 'foo'  ? 'ok' : 'ng'); #=> ok
print +('foo' eq 'foo') ? 'ok' : 'ng' ; #=> ok