数字代码中的Perl未初始化值
当我运行这段代码时,我得到了这些我真的不理解的警告。当我将==更改为a=时,仍然会得到一个错误:数字代码中的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
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或。我还没有试图破译剧本的前半部分。