Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: open input files once

by v15 (Sexton)
on Jul 14, 2020 at 18:10 UTC ( [id://11119311]=note: print w/replies, xml ) Need Help??


in reply to Re: open input files once
in thread open input files once

Hi,

Can you explain this line of code:

push @output, $data{$key}->{$file} // 0

What is // doing in the above code? Also is there a way I can get a sorted output where column 1 is sorted, then column2 and then column3?

Replies are listed 'Best First'.
Re^3: open input files once
by Tux (Canon) on Jul 14, 2020 at 18:58 UTC

    You should be more specific in your definition of "sorted". Look at my solution elsewhere in this thread. If you mean that the 2nd, 3rd and 4th column being sorted numeric, that isn't very hard either: use pack/unpack

    my @key = qw( chr fivep threep strand ); my @files = qw( file1.tab file2.tab ); my %c7; foreach my $file (@files) { csv ( in => $file, out => undef, sep => "\t", on_in => sub { $c7{pack "A10l>l>l>", @{$_[1]}[0..3]}{$file} = $_ +[1][6] } ); } say join "\t" => @key, @files; foreach my $key (sort keys %c7) { say join "\t" => (unpack "A10l>l>l>" => $key), map { $c7{$key}{$_} + // 0 } @files; }

    Enjoy, Have FUN! H.Merijn
Re^3: open input files once
by haukex (Archbishop) on Jul 14, 2020 at 20:11 UTC
    What is // doing in the above code?

    // in this case is the Logical Defined Or (as opposed to the empty regular expression, for example in "$foo =~ //;"). The expression $data{$key}{$file} // 0 is the same as defined($data{$key}{$file}) ? $data{$key}{$file} : 0

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11119311]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (None)
    As of 2024-04-25 00:00 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found