Parsing structured files in Perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Parsing structured files in Perl
# 8  
Old 07-29-2011
How about this,
Code:
#!/usr/bin/perl

my %persons;

while (<DATA>) {
if (/define person\{/ .. /\}/) {
        if (/define/) {
                $var="per".++$i;
                next;
        }
        @ar=split;
        $detail=$ar[0];
        delete $ar[0];
        $persons{$var}->{$detail}="@ar";
}
}
for ($j=1;$j<=$i;$j++) {
print "Person :-",$j,"\n";
print $persons{'per'.$j}->{'first_name'},"\n";
print $persons{'per'.$j}->{'last_name'},"\n";
print $persons{'per'.$j}->{'nickname'},"\n";
print $persons{'per'.$j}->{'address'},"\n";
print $persons{'per'.$j}->{'birthday'},"\n";
}


__DATA__
###############################################################################
###############################################################################
#
# PERSONAL DATA DEFINITIONS
#
###############################################################################
###############################################################################


define person{
        first_name      John
        last_name       Peterson
        nickname        Peter
        address         1024 Maple street
        birthday        November 11th, 1970
        }

define office{
        use                home office
        office_name        main
        office_description home post office
        }


define person{
        first_name      Jamie
        last_name       Bluff
        nickname        Bluff
        address         134 Downing street
        birthday        October 15th, 1974
        }


define person{
        first_name      Melanie
        last_name       Houston
        nickname        Mell
        address         111 Boston street
        birthday        January 5th, 1969
        }

define office{
        use                foreign office
        office_name        main
        office_description foreign post office
        }


define person{
        first_name      Blake
        last_name       Dawson
        nickname        Blakey
        address         512 Kendrick street
        birthday        February 6th, 1970
        }

# 9  
Old 07-29-2011
Yazu, thank you very much for your time and help.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Reading structured arguments

I am passing an argument to a C++ program which is going to look like I need to get the integers into arrays a, b, c, d with a= 12,12,34,2,12 b= 34,4,2,1,23 c= 5,5,4,4,13 d= 6,6,6,6,5 (5 Replies)
Discussion started by: kristinu
5 Replies

2. Shell Programming and Scripting

Need help in parsing an input in perl

I am executing a command it is returning me something like this name ip port ------------------------------------ http-listener-1 * 6712 http-listener-2 * 8709 I have a subroutine getListenerName($porttobeChecked) This subroutine returns me the name of the listener if i pass a... (4 Replies)
Discussion started by: javaholics
4 Replies

3. Shell Programming and Scripting

Perl log parsing help

Hello, I'm sure this is a very simple problem, but I'm having trouble thinking of an efficient way to do the following: given a large centralized ssh-log, one file on a syslog server, not separated by machines (I wish it were), that looks something like this: Sep 27 16:20:56 machine-name... (1 Reply)
Discussion started by: droog72
1 Replies

4. Shell Programming and Scripting

Perl parsing question

I need some help loading an array. I have two unique delimiters, but I keep running into recursion. #!/usr/bin/perl $INFILE="/root/scripts/data.txt"; $pat1="SCRIPT####"; $pat2="SCRIPT#echo"; $flag=0; $inc=0; $chunk=""; open(INFILE,"<$INFILE")|| die; while(<INFILE>) { if... (2 Replies)
Discussion started by: s_becker
2 Replies

5. Shell Programming and Scripting

structured file update

Hi I have a very structured file consisting of multiple lines as follows: 3752 AVAILABLE 06/24/2009 FFFF 000000 0000 0000 3753 TRADITION (ASIA) LTD TACB 008329 0000 0000 3754 WACHOVIA CONVS/PRFDS WBCP 001099 0000 0000 3755 AVAILABLE 05/12/2009 FFFF 000000 0000 0000 3756... (3 Replies)
Discussion started by: aoussenko
3 Replies

6. Shell Programming and Scripting

Perl Parsing Argument

i wanna passing an argument which read in a file or a set of files if the files are given in the command line, otherwise use STDIN if no file argument. i got something like that, but it is not really working. so can anyone help me? which one is better to use for and how? Use perl. Thank you ... (0 Replies)
Discussion started by: mingming88
0 Replies

7. Programming

Parsing a string in PERL

I have an extractfile (with fields delimited by pipes '|') and I want to prepend a counter based on the below requirements: - The counter starts at 3. - The counter increments only if the date (67th field of the extractfile) is different. Below is what I started off with: $cnt=2;... (3 Replies)
Discussion started by: ChicagoBlues
3 Replies

8. Shell Programming and Scripting

Perl parsing compared to Ksh parsing

#! /usr/local/bin/perl -w $ip = "$ARGV"; $rw = "$ARGV"; $snmpg = "/usr/local/bin/snmpbulkget -v2c -Cn1 -Cn2 -Os -c $rw"; $snmpw = "/usr/local/bin/snmpwalk -Os -c $rw"; $syst=`$snmpg $ip system sysName sysObjectID`; sysDescr.0 = STRING: Cisco Internetwork Operating System Software... (1 Reply)
Discussion started by: popeye
1 Replies

9. Shell Programming and Scripting

Perl: parsing variables

I have the following script: #!/usr/bin/perl -w @files = <*.csv>; foreach $file (@files) { open(FH, $file); my @dt = split(/_|.csv/, $file); while (<FH>) { chomp; print $dt . $dt . ",$_\n"; } close(FH); } This script reads in all csv files in the current directory... (2 Replies)
Discussion started by: figaro
2 Replies

10. Shell Programming and Scripting

HTML parsing by PERL

i have a HTML report file..its in attachment(a part of the whole report is attached..name "input html.doc").also its source is attached in "report source code.txt" i just want to seperate the datas like in first line it should be.. NHTEST-3848498958-NHTEST-10.2-no-baloo a and so on for whole... (3 Replies)
Discussion started by: avik1983
3 Replies
Login or Register to Ask a Question