On Thu, 9 Dec 2004 15:01:11 -0500, Li, Aiguo (NIH/NCI)
<[EMAIL PROTECTED]> wrote:

[snip]

> while(<DATA>)
> {
> my $mykey;
> my $myvalue;
> my %Hash;
> my %mainhash = ();
> 
> next unless /^SNP/;
> %Hash=getkeyvalue($mykey,$myvalue);
> 
> foreach $mykey (keys(%Hash))
>        {

[snip]

> #__DATA__
> #SNP_A-1509443  3       3776202
> #SNP_A_1518557  3       3776202
> #SNP_A_1514538  5       5350951
> #SNP_A_1516403  1       5483872
> #BFFX-BioB-M_at  P P P P P A P
> #[snip]

/^/ matches the start of the string, but your string starts with '#',
so you need /^#SNP/ (or just /SNP/, which you use later).  You still
won't execute the foreach loop, though, because
'%Hash=getkeyvalue($mykey,$myvalue)' doesn't do anything, and
therefore %Hash has no keys:  You pass your function $mykey and
$myvalue, but you haven't assigned a value for eaither, so what you
would end up with, even if the subroutine were properly formed and
returned what you think it returns (see below) would be '%Hash =
([undef],[undef])'. This probably isn't what you want.

Also take a look at perldoc perlvar.  Inside getkeyvalue, you almost
certainly want @_, not $_, but take a look to see why.

HTH,

--jay savage

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>

Reply via email to