我正在尝试自学 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';
}
}
}