<STDIN>做参数出现的错误

<STDIN>做参数出现的错误

func  {
        my ($param) = $_[0];
       printf "$param";       # 打印的值是1
}

func (<STDIN>) ;   //错误,无论输入什么,都打印出1,貌似直接把$_[0]看成数组了,但是我已经加了括号了

my $text = <STDIN>;  
func ($text); // 正确,打印出输入的值

新学,请指教一二
我这里是好的

QUOTE:
kernel@fairland:~/chinaunix$ ./test.pl
just a test
just a test

记得是ctrl+D结束输入
还有你少写了一个sub


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl

sub func
{
    my ($param) = $_[0];
    printf "$param";
}
func(<STDIN>);



[Copy to clipboard] [ - ]
CODE:
-bash-3.2$ perl 1.pl
hello, cu
hello, cu

我这也正常。


QUOTE:
原帖由 ztkx 于 2008-11-9 22:36 发表
func  {
        my ($param) = $_[0];
       printf "$param";       # 打印的值是1
}

func () ;   //错误,无论输入什么,都打印出1,貌似直接把$_[0]看成数组了,但是我已经加了括号了

my $text = ...

是打印1,还是打印一行?
sub 自然是有的,这里忘写了

打印1,不是一行
my ($num)  = $_[0]
我希望返回一个数字,但是看起来结果类似于 my $num = @_,只是返回了参数个数