2014-08-29 135 views
0

我有一個符號下載從數據庫產生這種填充符號散列就好了。當我的鑰匙排序,我得到這個perl使用哈希過濾另一個哈希內容

foreach $symbol (sort keys %symbol_hash) { 
    print "$symbol\n "; 
} 
A AA AAL AAPL ABBV ABT ABT_SPIN ABX ACI ACN ACT ADBE ADI ADM ADSK AEIS AEO AES AET AFAM AGN AGU AIG AKAM AKS ALL ALNY ALR ALU AMAT AMGN AMP AMZN ANF ANN ANR APA APC ARCC 

我有一個包含的信息很多許多工藝Unix的配置文件。

這是配置文件

# Tick Size 
# tr -d \ | sort -u 
TickSizePostOpen = 1.00 
TickSize = { 
    penny1 = { 
    TickSize = 0.00 
    members = { 
     IWM 
     QQQ 
     SPY 
     SPY_TEST 
    } 
    } 
    penny = { 
    TickSize = </0.000/0.00/0.00 
    members = { 
A 
AA 
AAL 
AAPL 
ABT 
ABT_SPIN 
ZNGA 
    } 
    } 
    notpenny = { 
    TickSize = </9/9.99/9.99 
    } 
} 
BIPP.QuoterOx = { 
    Cup1and2 = { 
    BIPP.QuoterOx = BIPP-ox-1 
    members = { 
     Cup_1 
     Cup_2 
    } 
    } 
TRAP.PxByGroup = 1 
TRAP.Px = { 
    group1 = { 
    TRAP.Px = OPTxxxxxx 
    members = { 
     px.TRAP.1 
    } 
    } 
    group2 = { 
    TRAP.Px = OPTxxxxxx 
    members = { 
     px.TRAP.2 
    } 
    } 
TRAP.QuoterOx = { 
    Cup0 = { 
    TRAP.QuoterOx = QESxxxxx 
    members = { 
     Cup_0 
     Cup_99 
    } 
    } 
    Cup1and4and10 = { 
    TRAP.QuoterOx = ise-ox-1-4-10-dti 
    members = { 
     Cup_1 
     Cup_4 
     Cup_10 
    } 
    } 
Cup56 = { 
    TRAP.AuctionOx = ise-ox-56-ecl 
    members = { 
     Cup_56 
    } 
    } 
} 
TRAP.RotateQuote = { 
    rotatenames = { 
    TRAP.RotateQuote = 1 
     members = { 
       AAPL 
       ADY 
       AEIS 
       AFAM 
       AGP 
       ALNY 
       ZINC 
     } 
    } 
} 
Underlying = { 
    Cup0 = { 
    Underlying = MHR 
    members = { 
     Cup_0 
    } 
    } 
    g1 = { 
    Underlying = CEL 
    members = { 
     Cup_1 
    } 
    } 
} 
BIPP.Px = { 
    group1 = { 
     BIPP.Px = BOXPXMHR1 
     members = { 
      px.BIPP.1 
     } 
    } 
    group2 = { 
     BIPP.Px = BOXPXMHR2 
     members = { 
      px.BIPP.2 
     } 
    } 
} 
TWIG.Px = { 
    AB = { 
    TWIG.Px = TWIGPXMHR1 
    members = { 
    A 
    B 
    } 
} 
    CD = { 
    TWIG.Px = TWIGPXMHR2 
    members = { 
    C 
    D 
    } 
} 
    NOPQR = { 
    TWIG.Px = TWIGPXMHR6 
    members = { 
     N 
    O 
     P 
    Q 
    R 
    } 
} 
    STUV = { 
    TWIG.Px = TWIGPXMHR7 
     members = { 
      S 
      T 
      U 
      V 
     } 
    } 
    WXYZ = { 
    TWIG.Px = TWIGPXMHR8 
     members = { 
      W 
      X 
      Y 
      Z 
     } 
    } 
} 

我所試圖做的是從數據庫中下載的符號,填充符號散(工作),然後加載在配置文件中的文件,解析它歸結爲其最親密的元素,並使用符號哈希作爲過濾器,填充便士哈希。因此,如果從精簡配置文件中的元素在符號哈希中,請將其放入便士哈希中。


#!/perl/bin/perl 
use strict; 
use warnings; 

use DBI; 
use Data::Dumper; 

my $dbUser = 'yeah'; 
my $dbPass = 'boy';  # <--- was missing closing single quote 
my $dbSid = 'yeah.boy'; 
my $dbh = DBI->connect("dbi:Oracle:$dbSid", "$dbUser", "$dbPass") or die("Couldn't connect: $!"); 

my $penny_file = "/data/wowmom.cfg"; 
my %penny_hash =(); 
my %symbol_hash =(); 
my $query  = "select alotof stuff from yeah.boy "; 
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; 
} 

open(my $penny_fh, '<', "$penny_file") or die "Can't open $penny_file for reading: $!"; 
while (<$penny_fh>) { 
    next unless /\S/; 
    #print unless /[#{}=]/ ; # try this - the parse works! 
    if (!/[#{}=]/) { 
     if ($symbol_hash{$_}) { 
      $penny_hash{$_} = 1; # does not populate 
     } 
    } 
} 

#foreach my $symbol (sort keys %symbol_hash) { 
# print "$symbol\n "; 
#} # works 

print Dumper(\%penny_hash); #does not work 
#print Dumper(\%symbol_hash) ; # works 
#foreach my $penny (sort keys %penny_hash) { 
# print "$penny\n "; 
#} 

的自卸車(\%penny_hash)打印什麼。

+0

這可能僅僅是一個複製/粘貼錯誤,但你在該行'我的$ DBPASS =「男孩缺少一個右單引號;' – ThisSuitIsBlackNot 2014-08-29 14:28:07

+0

例如,您不是''penny_file''中的''chomp''行,所以您比較'foo'和'foo \ n'。 – ThisSuitIsBlackNot 2014-08-29 14:34:50

+2

有沒有人有一個規範的答案忘記'chomp'? – RobEarl 2014-08-29 14:57:07

回答

0

不要忘了你的chomp輸入:

while (<$penny_fh>) { 
    chomp;  # <-- remove line endings before string comparison