初学perl,一个有关print的问题。

初学perl,一个有关print的问题。

在《perl语言入门》中有一道练习题,需要输入一个key,然后根据key判断对应该的value.
我在程序中这样写:
#!perl


%hash =
(
    "fred" => "flintstone",
    "arney" => "rubble",
    "wilma" => "flintstone",
);

print "Please Enter the Name:";
$name = <STDIN>;
chomp($name);
if(exists $hash{$name})
{
    print "$name is $hash{$name}";
}

然后执行时总是先出现空白,你输入key后,Please Enter the Name:才会出现。我现在想让程序一运行立马出现:Please Enter the Name:然后我再输入name,应该怎么改。还有为什么这段程序会这样?print要等输入name后才执行。
谢谢 大家。

在程序开始处加上 $|=1
或者 print 的字符串末尾加上 "\n"
"在程序开始处加上 $|=1"?
FLW老大,偶还没有尝试过这个方法,呵呵.能否给点"$|=1"的相关资料?偶在<perl入门第4版>上没有见到过啊,谢谢您!
$| 关闭缓冲区:当$|设置为真的时候,perl将关闭缓冲区,这意味这脚本的东西将立即出现在服务器上.(《perl技术内幕》)


QUOTE:
原帖由 windows.li 于 2007-9-5 13:42 发表
"在程序开始处加上 $|=1"?
FLW老大,偶还没有尝试过这个方法,呵呵.能否给点"$|=1"的相关资料?偶在[perl入门第4版]上没有见到过啊,谢谢您!

Learning Perl 第四版第79页(5.9末尾)的例子

[Copy to clipboard] [ - ]
CODE:
select LOG;
$| = 1; #don’t keep LOG entries sitting in the buffer
select STDOUT;
#...time passes, babies learn to work, tectonic plates shift, and then … .
print LOG “This gets written to the LOG at once!\n”

可是这段代码没有问题啊,应该可以直接显示啊
而且我在自己的机器上试的时候就是一切正常啊
呵呵
原来这样啊。

我这里显示也是正常的,先出子句


QUOTE:
原帖由 perljoker 于 2007-9-6 09:36 发表
我这里显示也是正常的,先出子句

我的也是的,楼主能说明你的perl运行环境吗
我检查了一下,这可能和我的运行环境有关,我用的LINUX,用VIM写代码并在其中调试,
我在.vimrc文件里添加了以下内容:
"about perl program
“设置make调用的是perl命令
set makeprg=perl
"用<F9>保存并更新当前文件
map <F9> <ESC>:w<cr>:e %<cr>
”用<F10>来运行当前文件。
map <F10> :make %<cr>

这样当我写完代码后,按<F9>再按<F10>,就会出现这样的结果。
如果直接在终端执行不会出现这样结果。
按FLW的方法己经解决了,谢谢 大家了。