一个简单脚本运行出错

一个简单脚本运行出错

#!/usr/bin/perl –w
use strict;
our $max = 15;
sub read_max {
    my $counter = 0;
    while(<DATA>) {
        my $line = $_;
        if ($counter++ < $our) {
            print $line
        }
    }
}
read_max();

运行的时候出错
Global symbol "$our" requires explicit package name at ./test line 18.
Execution of ./test aborted due to compilation errors.
这个应该是个作用域的问题,这个是我自己写的一个测试脚本  package怎么定义啊?
$our???哪儿定义的这个变量?
$our改成$max
改了也报错
Name "main:ATA" used only once: possible typo at ./test line 6.
readline() on unopened filehandle DATA at ./test line 6.


QUOTE:
原帖由 risepp 于 2008-2-28 16:51 发表
改了也报错
Name "main:ATA" used only once: possible typo at ./test line 6.
readline() on unopened filehandle DATA at ./test line 6.

瞧这话说的……那就改回去呗。
our $max = 15;

==>

my $max =15;

or

package haha;
our $max = 15;


QUOTE:
原帖由 risepp 于 2008-2-28 16:51 发表
改了也报错
Name "main:ATA" used only once: possible typo at ./test line 6.
readline() on unopened filehandle DATA at ./test line 6.

大神啊
这是另一个错误
说的是你的DATA里面没有东西
算了
我给个可以正常运行的吧
也不知你那个代码什么地方来的
<DATA>这个是有点特殊的文件句柄

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use warnings;
use strict;
our $max = 15;
sub read_max {
my $counter = 0;
while(<DATA>) {
my $line = $_;
if ($counter++ < $max) {
      print $line
      }
        }
}
read_max();
__END__
first line
second line
third line
fourth line
5
6
7
8
9
10
11
12
13
14
15
16
17
18



QUOTE:
<lig@other-server:~/chinaunix>$ ./scope
first line
second line
third line
fourth line
5
6
7
8
9
10
11
12
13
14
15

谢谢大家的帮助  
1.我能问一下
__END__
first line
second line
third line
fourth line
5
6
7
8
9
10
11
12
13
14
15
16
17
18
这段是什么意思麽?
2. 定义my和our有什么区别麽? 我查了一些资料,还是糊里糊涂的。
创建私有变量(用 my),进行有选择地访问全局变量(用 our)
能举一个简单例子麽? 谢谢了!

不是很理解。
这段代码是我在一本书中看到的
Sams.Press.Sams.Teach.Yourself.Perl.in.24.Hours.3rd.Edition.Jun.2005.eBook
才开始学,很多概念不是很清楚。 请多多指教,谢谢!
use strict进行严格语法检查——变量使用前要先定义