web-dev-qa-db-ja.com

mythconverg_backup.plがエラーでクラッシュする: 'defined(@array)'を使用できません

./mythconverg_backup.plの1070行目で、「 'defined(@array)'を使用することはできません(defined()を省略した方がいいですか?)」というエラーでmythconverg_backup.plがクラッシュします。

Xubuntu 16.4 LTSを新規にインストールし、データベースを正常に復元した後、次のコマンドを使用してデータベースを再度バックアップします。

$ ./mythconverg_backup.pl --verbose --directory /home/lukas/mythtv/db_backups

結果は次のエラーです。

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at ./mythconverg_backup.pl line 1070.

ヒントを教えてください。

1
Lukas Jos

perldoc(5バージョン24.0)から

集約(ハッシュと配列)でのdefinedの使用は非推奨です。その集計のメモリが割り当てられたことがあるかどうかを報告するために使用されていました。この動作は、Perlの将来のバージョンではなくなる可能性があります。代わりに、サイズの簡単なテストを使用する必要があります。

if (@an_array) { print "has array elements\n" }

したがって、line 107 of mythconverg_backup.plに移動して、そこから定義関数を削除するだけです。例えば:

if( defined @an_array )変更するif( @an_array )

0