请教高手三道perl问题

1.与打开文件的句柄相关。我将test.txt与test.pl放置在同级目录下。我写的test.plmy$success=openTEST,"test.txt";if(!... 1.与打开文件的句柄相关。
我将test.txt与test.pl放置在同级目录下。
我写的test.pl
my $success = open TEST,"test.txt";
if(!$success){
print "Fail to open file";
}
test.txt文件是存在的。但为什么总是打印出 Fail to open file
2. 写一个程序,提示用户输入 given name(名),并给出其对应的 family name(姓)。
我写的代码如下:
%some_hash = {"fred" => "flintstone",
"barney" => "rubble",
"wilma" => "filintstone",
};
print "Please enter the given name:";
$_ = <STDIN>;
chomp $_;
if(exists $some_hash{$_}){
print "$_ family name is $some_hash{$_}\n";
}
这个程序怎么没有打印出任何东西。我猜想是exist这步错了,但是实在无法找到错误
3.
写一个程序,读入一串单词( 一个单词一行) ◆,输出每一个单词出现的次数。(提示:如果某个作为数字使用值是undefined 的,会自动将它转换为 0。)如果输入单词为 fred, barney, dino, wilma , fred(在不同行中), 则输出的 fred 将为3。将输出的单词按照 ASCII 排序。
我写的代码运行后没有任何输出
print "Please enter some world:\n";
chomp(@lines = <>);
foreach (@Lines){
$hash{$_} += 1;
}
foreach (sort (keys %hash)){
print "$_ => $hash{$_}\n;"

}
展开
 我来答
百度网友c9e795dda
2013-09-08 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1137万
展开全部
  1. 估计你的初始路径是在perl 的dir 而不是 test.pl 的 dir, 你试执行以下两句代码

    use Cwd; print cwd;

    要不, 你就写全路径 open F, "C:/...../text.txt";

  2. 你写的是 %some_hash = {"fred" => "flintstone",.... };

    而不是 %some_hash = ( "fred" => "flintstone",.... ) ;

    %some_hash = {"fred" => "flintstone",.... }; 基本上是只有键, 而没有值的 hash

  3. chomp(@lines = <>); 这种写法不是给人机交互的情境上用的, 系要读到字串, 得改成这样


my @lines; my $last;

while ( 1 ) {

    chomp ( my $input = <STDIN> );

    push @lines , $input;

    last unless $input;

}


foreach my $line ( @lines ) {

    ....

}

更多追问追答
追问
非常感谢解答。但是对于第三题。我在网上搜到如下代码,运行后是可用的,我实在不知道和我代码的差别。你能看出来吗?
chomp(@words = );
foreach (@words)
{
$hash{$_} ++;
}
foreach (sort (keys %hash))
{
print "$_ => $hash{$_}","\n";
}
追答
动... 是可以, 也是不可以, 因为你得打得出个 ^Z 才能中断这个输入. 一般就不会这麼做了.
但如果你问我差别, 那就是
chomp(@lines = ); <--- 这是小写
foreach (@Lines){ <--- 这是大写
建议你 use strict;

use strict;
my @lines ;
print "@Lines" ; # <-- 你就会得到报错的提示了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式