Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^7: Shorten a list...

by Cristoforo (Deacon)
on Oct 18, 2011 at 15:59 UTC ( #932186=note: print w/ replies, xml ) Need Help??


in reply to Re^6: Shorten a list...
in thread Shorten a list...

Yes, it is necessary to see exactly what your file looks like. Could have saved some typing knowing that :-)

A possible solution is close to my first answer.

#!/usr/bin/perl use strict; use warnings; { local ($/, $\) = ('', "\n\n"); while (<DATA>) { chomp; print if tr/\n// > 1; } } __DATA__ >Group 42 0 25ap, >name_06-T_1_0... at 92.00% 1 28ap, >name_06-T_1_0... * >Group 43 0 28ap, >name_07-N_1_0... * >Group 44 0 29ap, >name_07-N_1_0... * >Group 45 0 25ap, >name_03-T_1_0... * 1 25ap, >name_06-T_1_0... at 100.00% 2 25ap, >name_07-N_1_0... at 100.00% 3 25ap, >name_11-N_1_0... at 100.00% 4 25ap, >name_14-T_1_0... at 100.00%
The statement local ($/, $\) = ('', "\n\n");
, sets the INPUT_RECORD_SEPARATOR, $/, to read in paragraphs. A paragraph is lines of text followed by 1 or more blank lines, (2 or more newlines). The OUTPUT_RECORD_SEPARATOR, $\, is set to "\n\n". $\ is printed at the end of every print statement.


Comment on Re^7: Shorten a list...
Select or Download Code
Re^8: Shorten a list...
by la (Novice) on Oct 18, 2011 at 17:12 UTC
    Hey,

    I'm sorry about not having it exact from the start. I will keep that in mind for any later posts. Thanks again for all of your help.

    Between the time I left and arrived at work this morning, the format was again changed. They took out the spaces between the group names:

    >Group 42 0 25ap, >name_06-T_1_0... at 92.00% 1 28ap, >name_06-T_1_0... * >Group 43 0 28ap, >name_07-N_1_0... * >Group 44 0 29ap, >name_07-N_1_0... * >Group 45 0 25ap, >name_03-T_1_0... * 1 25ap, >name_06-T_1_0... at 100.00% 2 25ap, >name_07-N_1_0... at 100.00% 3 25ap, >name_11-N_1_0... at 100.00% 4 25ap, >name_14-T_1_0... at 100.00%

    I will try out the code you gave me and see if I can modify it for this new format. Thanks again for all of the help.

      So in this case, I would be changing the file separator from defining a new paragraph with blank lines, to defining a new paragraph with ">Group". THen I need the script to print the paragraph if the paragraph is greater than 2 lines.

      Is this along the right track?

      local ($/, $\) = ('', ">Group");
        #!/usr/bin/perl use strict; use warnings; { local $/ = '>Group'; while (<DATA>) { chomp; print ">Group$_" if tr/\n// > 2; } } __DATA__ >Group 42 0 25ap, >name_06-T_1_0... at 92.00% 1 28ap, >name_06-T_1_0... * >Group 43 0 28ap, >name_07-N_1_0... * >Group 44 0 29ap, >name_07-N_1_0... * >Group 45 0 25ap, >name_03-T_1_0... * 1 25ap, >name_06-T_1_0... at 100.00% 2 25ap, >name_07-N_1_0... at 100.00% 3 25ap, >name_11-N_1_0... at 100.00% 4 25ap, >name_14-T_1_0... at 100.00%
        prints
        >Group 42 0 25ap, >name_06-T_1_0... at 92.00% 1 28ap, >name_06-T_1_0... * >Group 45 0 25ap, >name_03-T_1_0... * 1 25ap, >name_06-T_1_0... at 100.00% 2 25ap, >name_07-N_1_0... at 100.00% 3 25ap, >name_11-N_1_0... at 100.00% 4 25ap, >name_14-T_1_0... at 100.00%
        If you want to separate the records with a newline in the output, add a newline in the print. print ">Group$_\n" if tr/\n// > 2;

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (11)
As of 2015-07-07 13:22 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 (88 votes), past polls