nDiki

2013年8月21日 (水)

Perl でスカラーコンテキストでリストを評価すると。

周りで以外に知られていなかったので、次に別の人に聞かれた時用に書いとく。

知っている人は知っている、リストと配列では、スカラーコンテキストで評価した時の結果が違うという話。

 $ perl -e "print scalar ('a', 'b', 'c');"
 c

 $ perl -e "print scalar @{['a', 'b', 'c']};"
 3

とか。 サブルーチンの return のところにリストを書いている時など注意。

 #!/usr/bin/perl

 use warnings;
 use strict;
 use 5.10.0;

 sub primes_5_array {
   my @primes = (2, 3, 5, 7, 11);
   return @primes;
 }

 sub primes_5_list {
   return (2, 3, 5, 7, 11);
 }


 $, = ', ';

 say primes_5_array(10);
 say scalar primes_5_array(10);

 say primes_5_list(10);
 say scalar primes_5_list(10);

参考:

  • perldoc perldata の List value constructors
  • perldoc -f scalar
[ 8月21日全て ]

About

Process Time: 0.124447s / load averages: 0.51, 0.44, 0.46