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

Re^2: Help Me to Sort out from this

by Nansh (Acolyte)
on Mar 21, 2017 at 09:33 UTC ( [id://1185321]=note: print w/replies, xml ) Need Help??


in reply to Re: Help Me to Sort out from this
in thread Help Me to Sort out from this

I have File Like this.

BOOK_Author AYN RAND, ERNEST HEMINGWAY, JOAN DIDION

+RAY BRADBURY, GEORGE R.R. MARTIN

+GILLIAN FLYNN

Famous_singer Linkinpark, Lilwayne, Nikiminaj,

+seanpaul, Akon, Tpain

+Emenim

DESIRED OUTPUT

AYN RAND,ERNEST HEMINGWAY,JOAN DIDION,RAY BRADBURY,GEORGE R.R.MARTIN,GILLIAN FLYNN

Linkinpark,Lilwayne,Nikiminaj,seanpaul,Akon,Tpain,Emenim

I need to match the AUTHORS and SINGERS from different lines and need to put them in a respective array say @author and @singer. I tried alot. I couldnt do that so please anyone help me to solve this.

Replies are listed 'Best First'.
Re^3: Help Me to Sort out from this
by Corion (Patriarch) on Mar 21, 2017 at 09:41 UTC

    Have you reviewed your course material? I would expect that it covers everything you need to approach this problem.

    Please help us give you better answers. Show us what code you have already written, and explain to us what it does and where it fails to do what you need.

    Also review push, split and likely perlsyn.

Re^3: Help Me to Sort out from this
by hippo (Bishop) on Mar 21, 2017 at 09:52 UTC
    I tried alot.

    Why not provide a couple of the algorithms which you tried? Someone might then be able to point out where you were going wrong. Perhaps even one of those algorithms was a valid one and it was merely your code which was flawed. But again, with neither algorithm nor code to view we will never know.

Re^3: Help Me to Sort out from this
by huck (Prior) on Mar 21, 2017 at 10:23 UTC

    The key to this kind of problem is that when the line begins with a "continue-command"(plus) you want to process the rest of the line using the last "state" you were in, but when it doesnt begin with a "continue-command"(plus) you want to capture the new state, process the rest of the line with the new state, and remember that new state as the last_state for any following "continue-command"(plus) lines. Something like this

    my $last_state=''; while (my $line= <DATA>) { chomp $line; next unless ($line); if (substr($line,0,1) eq '+') { # if line starts with a plus use last_state to process process($last_state,substr($line,1)); } else { # otherwise set last_state and process with it my @parts=split(' ',$line,2); $last_state=$parts[0]; process($last_state,$parts[1]); } } # line sub process { my $state=shift; my $input=shift; ... do stuff based on $state and $input ... } # process

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (3)
As of 2024-05-26 18:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found