Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Need help in parsing an input

by Athanasius (Archbishop)
on Jan 17, 2013 at 11:49 UTC ( [id://1013764]=note: print w/replies, xml ) Need Help??


in reply to Need help in parsing an input

Hello sandeepda, and welcome to the Monastery!

If I’ve understood your question correctly, the following script should give you an idea of how to proceed:

#! perl use Modern::Perl; my %ports; while (<DATA>) { next unless /^http/; my @records = split /\s+/; if (exists $ports{$records[2]}) { warn "Attempt to give port $records[2] a second name"; } else { $ports{$records[2]} = $records[0]; } } say join(' and ', get_listener_name($_)) for 6712, 4516; sub get_listener_name { my ($port_to_be_checked) = @_; my @results = ('FALSE', 'a1=null'); if (exists $ports{$port_to_be_checked}) { @results = ('TRUE', 'a1=' . $ports{$port_to_be_checked} . '(li +stener name)'); } return @results; } __DATA__ name ip port ------------------------------------ http-listener-1 * 6712 http-listener-2 * 8709

Output:

21:40 >perl 486_SoPW.pl TRUE and a1=http-listener-1(listener name) FALSE and a1=null 21:40 >

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Need help in parsing an input
by sandeepda (Novice) on Jan 17, 2013 at 12:29 UTC
    Thanks Athanasius; I am trying it to make generic I am getting this output as array @outputarray also output is synamic the name and post can change How can i parse this where outputarray[0]=name ip port outputarray[0]=------------------------------------ outputarray[0]=http-listener-1 * 6712
    name ip port ------------------------------------ http-listener-1 * 6712 http-listener-2 * 8709

      Hello again sandeepda,

      I’m sorry, but I don’t understand what you are asking.

      The only thought that comes to mind is that you may be unfamiliar with Perl’s special DATA filehandle. But I used that only for convenience. If you already have the data in an array, you would adapt the opening of my script as follows:

      for (@existing_array) {

      On the other hand, if the data is in a file (named, say, “ports.dat”), then you would begin like this:

      my $file = 'ports.dat'; open(my $fh, '<', $file) or die "Cannot open '$file' for reading: $!"; while (<$fh>) {

      If this doesn’t answer your question, please explain what you are asking with your version of the code together with sample input and the output you want. See How do I post a question effectively?

      Hope that helps,

      Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

        Sorry I am beginner in perl just starting hence if there are mistake please oblige. Here is the problem I am executing subroutine in perl script it returns me output dynamically in array format @outputArray
        outputarray[0]=name ip port outputarray[1]=------------------------------------ outputarray[2]=http-listener-1 * 6712 outputarray[3]=http-listener-2 * 4743
        I can also get the output array as like below also if i want
        outputarray[0]=http-listener-1 * 6712 outputarray[1]=http-listener-2 * 4743
        I want to write a subroutine which will check whether port exists and if exists returns me true and the listener name if not it returns me false and null getListenerName($porttobeChecked) This subroutine returns me the name of the listener if i pass a port. Eg: If $porttobechecked=6712 I want to return an array a[0]=TRUE and a1=http-listener-1(listener name) If port to be checked = 4516.I want to return an array a[0]=FALSE and a1=null .Help required

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2024-04-24 07:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found