http://www.perlmonks.org?node_id=991041


in reply to Re^7: Help with pushing into a hash
in thread Help with pushing into a hash

Thanks. That removed 2 of the error lines. The first 2. Now these are left:

Use of uninitialized value $1 in hash element at C:\Users\Jems\Desktop +\Perl\test\test2script.plx line 26. Use of uninitialized value $1 in hash element at C:\Users\Jems\Desktop +\Perl\test\test2script.plx line 27. Use of uninitialized value $1 in hash element at C:\Users\Jems\Desktop +\Perl\test\test2script.plx line 28.

lines 26, 27 and 28 are:

for ( read_file $uniprot ) { /(.{6})\s+.+=([^\s]+)/; push @activline, "$1 | $2 | $activ{$1}\n" if $activ{$1}; #26 push @antioxline, "$1 | $2 | $antiox{$1}\n" if $antiox{$1}; #27 push @toxinline, "$1 | $2 | $toxin{$1}\n" if $toxin{$1};#28

The format for $uniprot is the same as for $test. I.E.

Q197F8 ORFNames=IIV3-002R Q197F7 ORFNames=IIV3-003L Q6GZX2 ORFNames=FV3-003R Q6GZX1 ORFNames=FV3-004R Q197F5 ORFNames=IIV3-005L Q6GZX0 ORFNames=FV3-005R ;PF02393 Q91G88 ORFNames=IIV6-006L ;PF12299;PF04383 Q6GZW9 ORFNames=FV3-006R

Thanks again!

Replies are listed 'Best First'.
Re^9: Help with pushing into a hash
by Kenosis (Priest) on Aug 31, 2012 at 16:59 UTC

    The message:

    Use of uninitialized value $1...

    Means that the regex is not matching some lines in your data set. Here are two options:

    say if !/(.{6})\s+.+=([^\s]+)/;

    This will show you the lines that are not matching, so you can adjust your regex, if needed.

    next unless /(.{6})\s+.+=([^\s]+)/;

    This will just skip those lines that don't match the regex.

      Well the file's format was wrong at some parts. So yeah, that. I'll go see if I can fix the file. Thanks so much again!

        You're very welcome! Return if you encounter more issues...