初期化された値に問題があります。あなたが見ることができるように
sub compare_with_terminal {
use Term::Size::Any qw(chars pixels);
my $columns = 0;
my $rows = 0;
($columns, $rows) = chars *STDOUT{IO};
print "Columns: ".$columns."\n"; #line 73
print "Rows: ". $rows."\n";
if($height > $columns || $width > $rows){
print "Bigger than terminal: ";
my $option = <>;
chomp($option);
if($option eq "N"){
print "End.";
exit 0;
}
}
}
、私はそこに作成した2つの値$columns
と$rows
を初期化:私はメソッドを持っているスクリプトがあります。私はUnixのまで、このスクリプトを実行するときには、私が手:
Use of uninitialized value $columns in concatenation (.) or string at ./perl/script.pl line 73 (#1) (W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake. To suppress this warning assign a defined value to your variables.
$rows
は同じエラーを持っています。
これらのエラーは、私が変数$columns
を初期化しなかったと言いますが、私はそうしました。誰でも私を説明し、この問題を解決しようとすることができますか?引数なしchar
を使用して
What's line 73? (あなたがスニペットのどこでも文字列に '$ columns'を使わないので、あなたはそれを見せていないと思っています) – ThisSuitIsBlackNot
コンソールのサイズを読み、' $ columns'と '$ rows'変数に書きます。彼らは私が望む数字であり、弦ではありません。窓ではすべてうまく動作し、私はエラーを取得しません。 – allocer
$ columnsが割り当てられた後、$ columnsが定義されているかどうかはチェックしません。 – stevesliva