Use of implicit split to @_ is deprecated at xxx.pl line x.
- こんなエラーが出たので調べてみた
- どうやらsplitをスカラーで返すと@_を使うらしい。サブルーチンだと引数の@_破壊になる。
- 素直に一度配列(リスト)にいれましょう。
#/usr/bin/perl use strict; use warnings; use v5.10; say scalar ( split //, "perl" ); __END__ Use of implicit split to @_ is deprecated at split.pl line 6. 4
スカラコンテキストでは、見つかったフィールドの数を返します。 スカラコンテキストと無効コンテキストでは、配列 @_ に分割結果を 設定します。 しかし、スカラコンテキストや無効コンテキストでの split の使用は 推奨されません; サブルーチンの引数を上書きしてしまうからです。
http://perldoc.jp/docs/perl/5.10.1/perlfunc.pod
- 悪い例
#/usr/bin/perl use strict; use warnings; use v5.10; sp_test("broken?"); sub sp_test { say scalar ( split //, "perl" ); say "@_"; } __END__ Use of implicit split to @_ is deprecated at split.pl line 10. 4 p e r l