Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re: sprintf: using nested code

by 2teez (Vicar)
on Sep 14, 2015 at 19:08 UTC ( #1141962=note: print w/replies, xml ) Need Help??

in reply to sprintf: using nested code

Hi mhearse,
I'm struggling to make nested code work inside sprintf. Can someone advise?
1. My candy advise, DO NOT BE extremely CLEVER! Simply use your for loop outside the sprintf

2. However, if you want to do want you want to do, because you are using perl, then instead of using a subroutine or an eval, why not use a do{...} like so: not REALLY tested

#!/usr/bin/perl -w use strict; my %hash = ( son => { year => 2006, name => 'Paul', }, father => { year => 1981, name => 'Ryan', }, mother => { year => 1978, name => 'Bose', }, ); print sprintf( "%s: %s", 'Person' . $/, do { ## <== note here my $order; for ( sort keys %hash ) { $order .= join ' | ' => $_, %{ $hash{$_} }, $/; } $order; } );
check perldoc -f do
from your CLI to see why this over eval.

3. IMHO, don't be too clever about your program. A simple program often save the day!

Apparently, while I was still trying to frame my answer to this, BrowserUk came up first! ++!
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (3)
As of 2021-04-17 05:47 GMT
Find Nodes?
    Voting Booth?

    No recent polls found