Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: A little (formatted) vanity

by briac (Sexton)
on Oct 02, 2001 at 03:59 UTC ( [id://116026]=note: print w/replies, xml ) Need Help??


in reply to A little vanity

Here are some experiments with format. It behaves in a rather weird fashion when eval'ed. It seems to replace all the 'template variables' in the format by their actual values when the evaluation is called. The (kludgy) workaround I found is to eval on each iteration of the for $i(0..9)

The use of the eval is to be able to get the longest name of the list and construct the format according to it

my $i; my $format = "format STDOUT =\n" . '@>>> ' . '@' . '<' x ($longest + 3) . " @<<<<\n" . '$i, $results[$i]->[0], $results[$i]->[1]' . "\n.\n"; print $format; eval $format; die $@ if $@; for $i (0..9) { write; }

(I think that there should be a better way to do the above though)

The most straightforward approach of using format in this script would be the following:

my $i; format STDOUT_TOP= Rank Name Posts -------------------------------- . format STDOUT = @||| @<<<<<<<<<<<<<<<<<<<< @<<<< $i, $results[$i]->[0], $results[$i]->[1] . for $i (0..9) { write; }

But in a nicer and more obfuscation prone style, one could prefer

my $picture = '@||| @' . '<' x $longest . "@<<<<\n"; for my $i (0..9) { formline($picture, $i, $results[$i]->[0], $results[$i]->[1]); } print $^A; # use English; print $ACCUMULATOR;

Eeek!

Cheers,
briac

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2024-05-30 22:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.