Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: perl parsing

by Marshall (Canon)
on Oct 04, 2017 at 08:33 UTC ( [id://1200646]=note: print w/replies, xml ) Need Help??


in reply to perl parsing

A rather strange looking solution, but with an approach that can be extended to many such situations: (and no I don't think this is the "best" solution).
#!/usr/bin/perl use strict; use warnings; my $line; while ( defined ($line = <DATA>)) { if ($line =~ /^name/) { $line = process_record ($line); redo if defined $line; # another name line } } sub process_record { my $line = shift; (my $name) = $line =~ /^name\s+(\w+)/; my %devices; while (defined ($line = <DATA>) and $line !~ /^name/) { if ( (my $device) = $line =~ /^device\s+(\w+\s+\w+)/) { $device =~ s/(\w+)\s+(\w+)/$1 $2/; $devices{$device}=1; } } print "$name:\n"; print " device $_\n" foreach keys %devices; return $line; } =PRINTS: Brian: device ipad 2001 Andrew: device ipad 2009 ryan: device ipad 2005 device cell 2009 =cut __DATA__ socks something name Brian shirt yellow socks black device ipad 2001 device ipad 2001 device ipad 2001 tag no tag 0 name Andrew shirt orange socks black device ipad 2009 tag no tag 0 name ryan shirt blue socks black device ipad 2005 device cell 2009 tag yes tag 1

Replies are listed 'Best First'.
Re^2: perl parsing
by cbtshare (Monk) on Oct 04, 2017 at 20:50 UTC
    thank you all!!
Re^2: perl parsing
by cbtshare (Monk) on Oct 04, 2017 at 22:44 UTC

    one issue is that Brian has 3 devices, you code prints one device ipad 2001 device ipad 2001 device ipad 2001

      How could you change Marshall's solution or perhaps poj's here to give you the results you want?


      Give a man a fish:  <%-{-{-{-<

      Well I figured that these were "dupes". Consider what would happen if $devices{$device}=1; was changed to $devices{$device}++; and what that would mean for adapting the printout of the hash to show the number of identical devices.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (6)
As of 2024-04-23 11:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found