数字代码中的Perl未初始化值

数字代码中的Perl未初始化值,perl,hashmap,initialization,Perl,Hashmap,Initialization,当我运行这段代码时,我得到了这些我真的不理解的警告。当我将==更改为a=时,仍然会得到一个错误: Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336 Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336

当我运行这段代码时,我得到了这些我真的不理解的警告。当我将==更改为a=时,仍然会得到一个错误:

Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336
Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336.
Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336.
Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336.
Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336.
Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336.
Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336.
Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336.
Use of uninitialized value in numeric eq (==) at ./pennies_again line 53, <$ogen_fh> line 2336.

A
AA
AAL
AAPL
ABT
ABT
SPIN
ABX
这是代码,它是符号散列为symbol_hash{$1}==1的部分。我甚至不知道这意味着什么:

#!/sbc/perl/bin/perl
#/sbcimp/etds_extend.pl
use strict;
use warnings;
use DBI;
use Data::Dumper;
my $dbUser = '1';
my $dbPass = '_01';
my $dbSid  = 'A.WORLD';
my $dbh    = DBI->connect( "dbi:Oracle:$dbSid", "$dbUser", "$dbPass" ) or die("Couldn't connect: $!");

#sub read_extend

my %symbol_hash = ();
my $query       = "select e_risk_symbol from gsd_etds where level_name='CS' order by e_risk_symbol";
if ( !$dbh ) {
    print "Error connecting to DataBase; $DBI::errstr\n";
}
my $cur_msg = $dbh->prepare($query) or die "\n\nCould not prepare statement: " . $dbh->errstr;
$cur_msg->execute();
while ( my @row = $cur_msg->fetchrow_array ) {
    $symbol_hash{ $row[0] } = 1;
}
#for my $symbol (sort keys %symbol_hash ) {
#    print "$symbol\n" ;
#
#}

my %extend_hash   = ();
my @error_array   = ();
my %penny_hash    = ();
my $penny_file    = "/sbcig/qgen.cfg";
my $ticksize_flag = 0;
my $penny_flag    = 0;
my $member_flag   = 0;
open( my $ogen_fh, '<', "$penny_file" ) or die "Can't open $penny_file for reading: $!";

foreach my $line (<$ogen_fh>) {
    next if ( $line =~ m/vi:set cindent,cino=+0/ );

    chomp($line);
    if ( $line =~ /^\s*TickSize\s+=\s+\{/ ) {
        $ticksize_flag = 1;
    }
    elsif ( ( $ticksize_flag == 1 ) && ( $line =~ /^\s*penny.*\s+=\s+\{/ ) ) {
        $penny_flag = 1;
    }
    elsif ( ( $penny_flag == 1 ) && ( $line =~ /^\s*members\s+=\s+\{/ ) ) {
        $member_flag = 1;
    }
    elsif ( ( $member_flag == 1 ) && ( $line =~ /\}/ ) ) {
        $member_flag = 0;
    }
    elsif ( ( $member_flag == 1 ) && ( $line =~ /\s*(\S+)\s*$/ ) ) {
        if ( $symbol_hash{$1} == 1 ) {                       ### Line 53
            $penny_hash{$1} = 1;
        }
    }
    elsif ( ( $penny_flag == 1 ) && ( $line =~ /\}/ ) ) {
        $penny_flag = 0;
    }
    elsif ( ( $ticksize_flag == 1 ) && ( $line =~ /\}/ ) ) {
        $ticksize_flag = 0;
    }
}

for my $penny ( sort keys %penny_hash ) {
    print "$penny\n";
    sleep 1;
}
您的%symbol\u哈希并不总是为您尝试访问的密钥初始化:

    if ( $symbol_hash{$1} == 1 ) {                       ### Line 53
一种修复方法是在进行数值比较之前验证密钥是否存在==:

但是,给定哈希如何初始化的上下文,唯一可能的值是1或

因此,您真正想要测试的是一个真实值:

    if ( $symbol_hash{$1} ) {                       
您的%symbol\u哈希并不总是为您尝试访问的密钥初始化:

    if ( $symbol_hash{$1} == 1 ) {                       ### Line 53
一种修复方法是在进行数值比较之前验证密钥是否存在==:

但是,给定哈希如何初始化的上下文,唯一可能的值是1或

因此,您真正想要测试的是一个真实值:

    if ( $symbol_hash{$1} ) {                       
您的%symbol\u哈希并不总是为您尝试访问的密钥初始化:

    if ( $symbol_hash{$1} == 1 ) {                       ### Line 53
一种修复方法是在进行数值比较之前验证密钥是否存在==:

但是,给定哈希如何初始化的上下文,唯一可能的值是1或

因此,您真正想要测试的是一个真实值:

    if ( $symbol_hash{$1} ) {                       
您的%symbol\u哈希并不总是为您尝试访问的密钥初始化:

    if ( $symbol_hash{$1} == 1 ) {                       ### Line 53
一种修复方法是在进行数值比较之前验证密钥是否存在==:

但是,给定哈希如何初始化的上下文,唯一可能的值是1或

因此,您真正想要测试的是一个真实值:

    if ( $symbol_hash{$1} ) {                       

%symbol_hash的每个元素的值都是1,因此可以从$symbol_hash{EXPR}获得的两个值是1,对于不存在的元素,这两个值是未定义的。当使用==进行比较时,后者发出警告

您正在检查哈希元素是否存在,以便可以使用

if (exists($symbol_hash{$1}))
而不是

if ($symbol_hash{$1} == 1)
但既然所有存在的值都是真的,而那些不存在的值都是假的,那么所需要的就是

if ($symbol_hash{$1})

%symbol_hash的每个元素的值都是1,因此可以从$symbol_hash{EXPR}获得的两个值是1,对于不存在的元素,这两个值是未定义的。当使用==进行比较时,后者发出警告

您正在检查哈希元素是否存在,以便可以使用

if (exists($symbol_hash{$1}))
而不是

if ($symbol_hash{$1} == 1)
但既然所有存在的值都是真的,而那些不存在的值都是假的,那么所需要的就是

if ($symbol_hash{$1})

%symbol_hash的每个元素的值都是1,因此可以从$symbol_hash{EXPR}获得的两个值是1,对于不存在的元素,这两个值是未定义的。当使用==进行比较时,后者发出警告

您正在检查哈希元素是否存在,以便可以使用

if (exists($symbol_hash{$1}))
而不是

if ($symbol_hash{$1} == 1)
但既然所有存在的值都是真的,而那些不存在的值都是假的,那么所需要的就是

if ($symbol_hash{$1})

%symbol_hash的每个元素的值都是1,因此可以从$symbol_hash{EXPR}获得的两个值是1,对于不存在的元素,这两个值是未定义的。当使用==进行比较时,后者发出警告

您正在检查哈希元素是否存在,以便可以使用

if (exists($symbol_hash{$1}))
而不是

if ($symbol_hash{$1} == 1)
但既然所有存在的值都是真的,而那些不存在的值都是假的,那么所需要的就是

if ($symbol_hash{$1})

符合事实的给定哈希如何初始化的上下文,唯一可能的值是1或。我还没有试图破译剧本的前半部分。给定哈希如何初始化的上下文,唯一可能的值是1或。我还没有试图破译剧本的前半部分。给定哈希如何初始化的上下文,唯一可能的值是1或。我还没有试图破译剧本的前半部分。给定哈希如何初始化的上下文,唯一可能的值是1或。我还没有试图破译剧本的前半部分。