Я пишу простую программу, которая читает код Морзе из файла и преобразует его в обычный текст. Однако я получаю некоторые сумасшедшие ошибки. Я не очень хорошо знаком с perl, и мне приходится запускать его из командной строки. Ниже приведена ошибка, которую я получаю, и код. Возможно, я просто ошибаюсь. Я печатаю: «perl -w Lott_Morse.pl morse.txt» в командной строке. Любая помощь будет оценена по достоинству.Perl - Ошибка, вызванная неинициализированным значением в печати
Ошибка:
Use of uninitialized value in print at Lott_CSC360_Morse2.pl line 31, <> line 7.
Use of uninitialized value in print at Lott_CSC360_Morse2.pl line 31, <> line 7.
Use of uninitialized value in print at Lott_CSC360_Morse2.pl line 31, <> line 7.
Use of uninitialized value in print at Lott_CSC360_Morse2.pl line 31, <> line 7.
Use of uninitialized value in print at Lott_CSC360_Morse2.pl line 31, <> line 7.
Use of uninitialized value in print at Lott_CSC360_Morse2.pl line 31, <> line 7.
The message is 0Jessicas-MacBook-Pro:Documents
Код:
#!/usr/bin/perl
use 5.010;
use warnings;
%morse_to_plain=(
".-" =>"A", "-..." => "B", "-.-." => "C", "-.." => "D", "." => "E",
"..-." => "F", "--." => "G", "...." => "H", ".." => "I", ".---" => "J",
"-.-" => "K", ".-.." => "L", "--" => "M", "-." => "N", "---" => "O",
".--." => "P", "--.-" => "Q", ".-." => "R", "..." => "S", "-" => "T",
"..-" => "U", "...-" => "V", ".--" => "W", "-..-" => "X", "-.--" => "Y",
"--.." => "Z", "-----" => "0", ".----" => "1", "..---" => "2", "...--" => "3",
"....-" => "4", "....." => "5", "-...." => "6", "--..." => "7", "---.." => "8",
"----." => "9", ".-.-.-" => ".", "--..--" => ",", "..--.." => "?", ".----." => "'",
"-....-" => "-", ".-..-." => '"', ".--.-." => "@", "-...-" => "=", "!" => " "
);
chomp(@message = <>);
print "The message is ";
foreach $char (@message)
{
print $morse_to_plain{$char};
}
Я не получаю больше ошибок, но это только чтение первой строки в файле .. Это нужно прочитать их все. – JLott
@JLott Использование '<>' в скалярном контексте читает только одну строку. Я бы использовал цикл while (<>), если бы я был вами, и читал строки один за другим. – TLP
@JLott - Приносим извинения за то, что я не понимал, что вы пытаетесь читать из файла. Скорректируйте сценарий для этого. Пожалуйста, подумайте о включении предложений [TLP] (http://stackoverflow.com/users/725418/tlp). – Kenosis