0
sub Function(\[$@%]);

これWindows (Windows 7 の Perl v5.14.2) で動作し、3 種類の引数すべてを受け入れます。ハッシュ、スカラー、およびリスト。

ただし、Linux (CentOS リリース 4.5 の Perl 5.6.1) で同じプロトタイプを使用すると、

Malformed prototype for main::Function: \[%@$].

両方で、私はやっていuse 5.006ます。 それ以外は、スクリプトはまったく同じです。

4

1 に答える 1

3

そのプロトタイプは 5.6.1 には存在しませんでした。5.14で追加されたので、最近追加されました。(つまり、サポートされているすべてのバージョンの Perl に含まれています。)

配列またはハッシュをサブルーチンに渡すことはできません。スカラーのリストのみを渡します。プロトタイプにより、呼び出し元のコードが参照を取得して渡すようになります。それは、変更することで明示的にできることです

sub Function(\[$@%]) { }
Function($s);
Function(@a);
Function(%h);

sub Function { }
Function(\$s)
Function(\@a)
Function(\%h)

いずれにせよ、プロトタイプは一般的に避けるべきです。

于 2012-09-25T15:56:13.957 に答える