Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Hi Guys;

I have data like this;
server_A, Perl, UK server_A, Word, UK server_A, Outlook, UK server_A, Excel, UK server_B, Reuters, NL server_B, TradeXL, NL server_B, Thompsons, NL server_B, Bloomberg, NL server_B, Tibco, NL server_c, BasketLink, USA server_c, Evolution, USA server_c, Lotus, USA server_c, TIB, USA server_A, Python, UK
And I need to produce this output;
server_A Perl UK Word UK Outlook UK Excel UK Python UK server_B Reuters NL TradeXL NL Thompsons NL Bloomberg NL Tibco NL server_c BasketLink USA Evolution USA Lotus USA TIB USA
So, I wrote this code;
#! c:/perl/bin/perl.exe use strict; open (LST,"c:/work/test_data.lst") || die "\n$!\n"; chomp (my @data_array = <LST>); my $snap_shot; my %seen; my @cleaned_data; foreach my $data ( @data_array) { my $rec; my ($server, @info) = split (/,/,$data); if (! $seen{$server}) { $rec->{Server_Name} = $server; print "$server\n"; $seen{$server}++; print "\t@info\n"; @{$rec->{Apps_Info}} = @info; } else { print "\t@info\n"; @{$rec->{Apps_Info}} = @info; } push (@cleaned_data, $rec); }
Basically I need help with the logic of the script. It works fine if all entries relating to one item are repeated consecutively. However if entries were not listed consecutively, then this script will not produce the required output. I suppose the easy way around it is to sort the list alphabetically first and then run the script. The way I thought of doing it is by storing and indexing server names in an array then looping through the array and the list to pluck out the related item, this approach was taking ages and involved a lot of coding. So I just wondered how would you or could this be achieved easier and faster but from within the code?


In reply to Extracting non-consecutive but related items from an array. by blackadder

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others taking refuge in the Monastery: (7)
    As of 2018-06-22 00:28 GMT
    Find Nodes?
      Voting Booth?
      Should cpanminus be part of the standard Perl release?

      Results (120 votes). Check out past polls.