私はPerlを独学しようとしていて、苦労しています... 昨夜、リストとユーザー入力について学ぶために、ユーザーが提供した一連の数値の平均を計算するプログラムを作成したので、今日はそうしようと思いましたハッシュについて学ぶためのモールス信号デコーダ。購入した本に目を通しましたが、ハッシュについてはあまり詳しく説明されていません...実際には、多くのことをうまく説明していません。どんな助けでも大歓迎です!
とにかく、ユーザーが入力したモールス符号をデコードするプログラムを書きたいと思っています。したがって、ユーザーは次のように入力します。
-.-.
.-
-
...
!
.-.
..-
.-..
.
感嘆符は別の単語を意味します。このメッセージは、ユーザーに「Cats Rule」を返します。以下は私がこれまでに持っているコードです...覚えておいてください..私は24時間以内にperlでプログラミングしています(笑)。
コード:
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';
}
}
}