Я пытаюсь научить себя Perl, и я борюсь ... Прошлой ночью я написал программу для вычисления среднего набора чисел, предоставленных пользователем, чтобы узнать о списках и пользовательском вводе, поэтому сегодня я подумал, что сделаю декодер азбуки Морзе, чтобы узнать о хэшах. Я просмотрел книгу, которую купил, и она не очень хорошо объясняет хэши... на самом деле она не очень хорошо объясняет многие вещи. Любая помощь будет оценена по достоинству!
В любом случае, я хочу написать программу, которая декодирует код Морзе, который вводит пользователь. Таким образом, пользователь должен ввести:
-.-.
.-
-
...
!
.-.
..-
.-..
.
Восклицательный знак будет означать отдельное слово. Это сообщение вернет пользователю «Cats Rule». Ниже приведен код, который у меня есть... Помните... Я программирую на Perl менее 24 часов, ха-ха.
Код:
use 5.010;
my %morsecode=(
'.-' =>'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', '.----' =>'1', '..---' =>'2',
'...--' =>'3', '....-' =>'4', '.....' =>'5', '-....' =>'6',
'--...' =>'7', '---..' =>'8', '----.' =>'9', '-----' =>'0',
'.-.-.-'=>'.', '--..--'=>',', '---...'=>':', '..--..'=>'?',
'.----.'=>'\'', '-...-' =>'-', '-..-.' =>'/', '.-..-.'=>'\"'
);
my @k = keys %morsecode;
my @v = values %morsecode;
say "Enter a message in morse code separated by a line. Use the exclamation point (!) to separate words. Hit Control+D to signal the end of input.";
my @message = <STDIN>;
chomp @message;
my $decodedMessage = encode(@message);
sub encode {
foreach @_ {
if (@_ == @k) {
return @k;
#This is where I am confused... I am going to have to add the values to an array, but I don't really know how to go about it.
}
else if(@_ == '!') {return ' '}
else
{
return 'Input is not valid';
}
}
}
use warnings;
иuse strict;
во всем коде, чтобы помочь выявить ошибки. - person Craig Treptow   schedule 26.01.2013use strict;
иuse warnings;
в начало вашего скрипта. Они помогают, хотя сначала они вам, вероятно, не понравятся. Кстати, достойный выбор 1-го проекта для изучения хэшей. - person William   schedule 26.01.2013@k
и@v
бессмысленны. Также ваш сабвуфер должен называтьсяdecode
, а неencode
. - person Brad Gilbert   schedule 26.01.2013