Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^2: command line perl reading from STDIN

by perlhappy (Novice)
on Jan 22, 2013 at 17:54 UTC ( #1014744=note: print w/ replies, xml ) Need Help??


in reply to Re: command line perl reading from STDIN
in thread command line perl reading from STDIN

cat input_file.fq | perl -ne '$s=<>;<>;<>;chomp($s);print length($s)."\n";' > output.txt
Ok, but for the above, if we were to step-by-step describe what is going on. How would it be described? It just that from the above I thought it would assign $s on every line OR skip 2 lines and then assign $s to the third line and repeat.


Comment on Re^2: command line perl reading from STDIN
Download Code
Re^3: command line perl reading from STDIN
by choroba (Canon) on Jan 22, 2013 at 18:02 UTC
      At the start, its the second line and then every fourth file after. ie line 2, 6, 8, 12 .. eof
      This is what was confusing me but I think I worked it out. See below. Thanks
Re^3: command line perl reading from STDIN
by perlhappy (Novice) on Jan 22, 2013 at 18:12 UTC
    Actually, I think I've just worked it out my head. Took a bit of thinking but this is what i think it is doing
    first line gets sent, but because <> is unassigned (before $s), it skips; then reads the second line and assigns $s to the line and does whatever; then reads third line but because <> is unassigned, it skips; reads fourth line and the same happens; restarts with 5 line but again because <> is unassigned before the $s it skips; reads 6th line and assigns it to $s and does whatever again
    this continues until end of file

    If this is incorrect, let me know. Otherwise I hope this helps anyone else who might look at it. Thanks for your help choroba
       perl -ne ' $s=<>; <>; <>; do_something_with_$s'

      is equivalent to

       perl  -e ' while (<>) { $s=<>; <>; <>; do_something_with_$s} '

      so 4 lines will be read each pass, but only the second line will be used for anything

      Personally, I'd go with something like

       perl -ne 'chomp; print length($_)."\n" if (/^@/);'

      instead.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (13)
As of 2015-07-06 20:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (83 votes), past polls