use strict時のソケットハンドル

今日、Perlでハマッたのでメモ。
use strict書いたら、関数にソケットハンドルを渡せなくってしばらく悩んだ。

use strict;
use Socket;

sub func {
  my $socket = shift;
  my $data = shift;
  ....
}

my $data = "any data";
socket(SOCKET, PF_INET, SOCK_STREAM, 0);
....

# エラーになる
# Bareword "SOCKET" not allowed while "strict subs" in use at ....
func(SOCKET, $data);

# これだと大丈夫
func(\*SOCKET, $data);

close(SOCKET);