Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^3: Regexp and reading a file n-lines at time

by epimenidecretese (Acolyte)
on Feb 03, 2010 at 14:22 UTC ( #821174=note: print w/replies, xml ) Need Help??


in reply to Re^2: Regexp and reading a file n-lines at time
in thread Regexp and reading a file n-lines at time

I finally got it!

Here is my solution and it works perfectly:

foreach $Title (keys %{$HASH}) { print $OUT "<recipe>".$Title."</recipe>\n"; my $abstract=shift @{$HASH->{$Title}}; print $OUT "<abstract>".$abstract."</abstract>\n"; my $procedure=pop @{$HASH->{$Title}}; foreach my $ingredient (@{$HASH->{$Title}}) { print $OUT "<ingredient>".$recipe."</ingredient>\n"; } print $OUT "<procedure>".$procedure."</procedure>\n"; }

__DATA__ <recipe> TORTA RICCIOLINA I</recipe> <abstract>Vi descrivo la torta ricciolina con due ricette distinte per +ché la prima avendola fatta fare, me presente, da un cuoco di profess +ione, pensai di modificarla, in modo che riescisse più gentile di asp +etto e di gusto più delicato.</abstract> <ingredient>Mandorle dolci con alcune amare, sbucciate, grammi 120.</i +ngredient> <ingredient>Zucchero in polvere, grammi 170.</ingredient> <ingredient>Candito, grammi 70</ingredient> <ingredient>Burro, grammi 60.</ingredient> <ingredient>Scorza di limone.</ingredient> <procedure>Intridete due uova di farina e fatene taglierini eguali a q +uelli più fini che cuocereste per la minestra nel brodo. In un angolo + della spianatoia fate un monte colle mandorle, collo zucchero, col c +andito tagliato a pezzetti e colla buccia del limone raschiata e ques +to monticello di roba, servendovi della lunetta e del matterello, sti +acciatelo e tritatelo in modo da ridurlo minuto come i chicchi del gr +ano. Prendete allora una teglia di rame e così al naturale, senza ung +erla, cominciate a distendere in mezzo alla medesima, se è grande, un + suolo di taglierini e conditeli cogl'ingredienti sopra descritti, di +stendete un altro suolo di taglierini e conditeli ancora, replicando +l'operazione finché vi resta roba e procurando che la torta risulti r +otonda e grossa due dita almeno. Quando sarà così preparata versatele + sopra il burro liquefatto servendovi di un pennello per ungerla bene + alla superficie e perché il burro penetri eguale in tutte le parti.C +uocetela in forno o nel forno da campagna; anzi, per risparmio di car +bone, può bastare il solo coperchio di questo. Spolverizzatela abbond +antemente di zucchero a velo quando è calda e servitela diaccia.</pro +cedure>

Thank you very much,guys!I think I'm going to love this place.

One of Crete's own prophets has said it: 'Cretans are always liars, evil brutes, lazy gluttons'.
He has surely told the truth.

Replies are listed 'Best First'.
Re^4: Regexp and reading a file n-lines at time
by hbm (Hermit) on Feb 03, 2010 at 18:24 UTC

    You may want to group your print statements; and you don't need to concatenate strings and variables (like "<title>".$Title."</title>") - you can print them together in one double-quoted string ("<title>$Title</title>").

    Consider:

    foreach $Title (keys %{$HASH}) { my $abstract = shift @{$HASH->{$Title}}; my $procedure = pop @{$HASH->{$Title}}; print $OUT "<title>$Title</title>\n", "<abstract>$abstract</abstract>\n", (map { "<recipe>$_</recipe>\n" }@{$HASH->{$Title}}), "<procedure>$procedure</procedure>\n"; }

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (10)
As of 2019-11-18 13:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Strict and warnings: which comes first?



    Results (90 votes). Check out past polls.

    Notices?