Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何正确声明全局变量?_Perl_Variables_Declaration - Fatal编程技术网

Perl 如何正确声明全局变量?

Perl 如何正确声明全局变量?,perl,variables,declaration,Perl,Variables,Declaration,全部, 考虑这段代码: our $classwork = 0; while( <INFILE> ) { chomp; next if $. == 1; if( $year >= 1992 && $year <= 1995 ) { $classwork = (split( /,/ ))[6]; print "Classwork is: ", $classwork, "\n"; }

全部,

考虑这段代码:

our $classwork = 0;
while( <INFILE> )
{
    chomp;
    next if $. == 1;
    if( $year >= 1992 && $year <= 1995 )
    {
        $classwork = (split( /,/ ))[6];
        print "Classwork is: ", $classwork, "\n";
    }
    if( $year >= 1996 && $year <= 2001 )
    {
        $classwork = (split( /,/ ))[-1];
    }
    print "Classwork is: ", $classwork, "\n";
    if( $year == 2002 )
    {
        $classwork = (split( /,/ ))[-2];
    }
    if( $year == 2003 || $year == 2004 )
    {
        $classwork = (split( /,/ ))[23];
    }
    if( $year >= 2005 && $year <= 2009 )
    {
        $classwork = (split( /,/ ))[22];
    }
    if( $year >= 2010 && $year <= 2012 )
    {
        $classwork = (split( /,/ ))[20];
    }
    print "Classwork is: ", $classwork, "\n";
    $line = <STDIN>;
}
我们的$classwork=0;
而()
{
咀嚼;
如果$.==1,则为下一步;

如果($year>=1992&&$year=1996&&$year=2005&&&$year=2010&&$year您没有为我们提供足够的信息来为自己复制问题,但最有可能的情况是,文件的第一行没有包含您正在处理的
$year
的正确格式的数据。也许第一行是hea德

另一种可能性是,
$year
可能不会在第一次通过
while
循环时设置,因此您永远不会输入设置
$classwork
if
块,然后在循环中的稍后点设置它。因为您没有显示
$year
的设置位置或方式,所以我们无法确定这是否是这到底是不是个问题

为了得到最好的答案,通常最好提供完整的、可运行的示例代码,以尽可能少的额外代码来演示您的问题(根据我的经验,此类示例通常不超过15-20行)这样做的另一个好处是,在寻找尽可能小的程序来演示问题的过程中,您经常会自己发现问题


<> P>也不存在明显的原因:<代码> $Works<代码>必须是全局的。在其当前声明中,改变<代码> < <代码> > <代码>我的<代码>不应影响您所显示的任何代码,并且我绝对会考虑移动<代码>我的$CaskWorks > <<代码> > 循环,除非有某些条件条件。n下,它不应该在每次传递时重新分配,而是应该在一次迭代到下一次迭代时保留其值。

这里的
$year
是什么?这是您脚本的全文吗?可能有一行字段不够。我真的很困惑为什么需要在这里声明全局变量