http://qs321.pair.com?node_id=1171135


in reply to Re: Got some problem with read write file
in thread Got some problem with read write file

Thank you! I still have a problem with the code choroba wrote and trying to find the problem, in my pc only prints the first gene name...

Replies are listed 'Best First'.
Re^3: Got some problem with read write file
by Laurent_R (Canon) on Sep 04, 2016 at 11:27 UTC
    I think that choroba's code should work fine (although I haven't tested it). Please show the code that you're using, there must be a slight mistake somewhere.
      #!usr\bin\perl -w #!/usr/bin/perl use warnings; use strict; open my $HUBFILE, '<', '1048_undefined.tsv' or die $!; my @hubs; while (my $line = <$HUBFILE>) { push @hubs, $1 if $line =~ /\d+ \t (\w+) \t/x; } close $HUBFILE; open my $OUT, '>', 'hubs.txt' or die $!; for my $hub (@hubs) { print {$OUT} "$hub\n"; } close $OUT;
        Hmm, I don't see anything obviously wrong in your code. My best guess would be that that the regex doesn't match your input.

        One thing you could to is to add the following line near the top:

        use Data::Dumper;
        and, then, right after closing the $HUBFILE file handle, to print out the content of the @hubs array:
        print Dumper \@hubs;
        to see the actual content of @hubs after having read the input file.

        My guess is that you'll also see only one record there, which would confirm that regex probably needs some change.

        Another thing you could do is to try to make the regex less strict about what it sees (maybe you don't have tabs, but spaces somewhere in your input):

        push @hubs, $1 if $line =~ /\d+ \s+ (\w+) \s+/x;
        Finally, it would be useful if you posted a sample of your input data between <c> and </c> tags, so that we get a better idea of what this input really looks like.