私が使用しているPerlツールに対するベンダー提供のパッチを検討していますが、サブルーチンに渡されたパラメータに「@」があらかじめ保留されている特定のタイプの変更の理由を特定するのは苦労しています。例えばPerlの 'at'(@@)の二重の意味は何ですか?
、だっライン:
my ($genfd) = @_;
は今:
my ($genfd) = @@_;
は、Perl開発されていない、私はここに行くに勉強していますが、これまでのところ、私understand that '@_'があります囲みサブルーチンに供給されるパラメータ。
I also understand(「$のgenfd」は左側の括弧に包まれている)は、上記割り当てがリストに「@_」キャストし、そのリストの最初の要素に「genfd」スカラ変数を割り当てます。これにより、サブルーチンへの最初のパラメータが 'genfd'に格納されます。
私が完全に執着しているのは、2番目の「@」の違いです。私はfound examples of this usage on GitHubを持っていますが、決して解説はありませんし、Perlの参考文献やSOの説明も見つけられません。どんな助けでも大歓迎です。
(ほとんどのvファイルは、人のドライブのバックアップであるreposに表示されます) – ikegami
ありがとう@キース!既存のファイルの '、v'履歴のいくつかを見ると、同じ構文が表示されます。このパッチは、RCS/CVSにパッチや新しいバージョンとして渡すことを意味する組み込みトリッキーを使って適用され、逃げ道を削ぎ取っています。 – thisismyrobot
@thisismyrobot:ファイルがRCSまたはCVS内部の '、v'ファイルであることが意図されている場合、' @@ _ 'は完全に有効です。ファイルをチェックすると正しいPerl' @ _ RCSまたはCVSから削除します。 –