f'ups rearranged
> > [EMAIL PROTECTED] wadet]$ perl
> > sub box {
> > return('<img src="p.gif" height="'.$_[0].'" width="'.$_[1].'">');
> > }
> > print <<eot;
> > <table>
> > <tr>
> > <td>${\box(5,10)}</td>
> > <td>${\box(7,10)}</td>
> > </tr>
> > </table>
> > eot
> > Ctrl-D
> > <table>
> > <tr>
> > <td><img src="p.gif" height="5" width="10"></td>
> > <td><img src="p.gif" height="7" width="10"></td>
> > </tr>
> > </table>
> >
> > see:
> >
> > [EMAIL PROTECTED] wadet]$ perldoc perlref
"Peter Kappus" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
...
> Aha! This is exactly the kind of solution I was looking for. I guess
what
> I'm doing here is passing a reference to a subroutine call? \box(5,10)
and
> then turning it into a scalar? ${}
Almost. In most contexts in perl, a { } construct is a BLOCK, and all code
in between the braces will be evaluated. So for our example, we call box
then return a reference to box()'s return value.
if a reference logically follows a $ in an interpolated string, the the
reference will be dereferenced.
Hence the desired results.
If (for some reason) we were passing a reference to the subroutine, it (
may ) look like this:
[EMAIL PROTECTED] wadet]$ perl
sub box {
return('<img src="p.gif" height="'.$_[0][0].'" width="'.$_[0][1].'">');
}
print <<eot;
<table>
<tr>
<td>${\box( [5,10] )}</td>
<td>${\box( [7,10] )}</td>
</tr>
</table>
eot
Ctrl-D
<table>
<tr>
<td><img src="p.gif" height="5" width="10"></td>
<td><img src="p.gif" height="7" width="10"></td>
</tr>
</table>
and if you want to go OO:
package My::Img;
sub new {
my($class, %params) = @_;
return( bless( { %params }, $class ) );
}
sub box {
my($self) = shift();
return('<img src="p.gif" height="'.$self->{height}.'"
width="'.$self->{width}.'">');
}
package main;
print <<eot;
<table>
<tr>
<td>${\ My::Img->new(height =>5, width => 10)->box() }</td>
<td>${\ My::Img->new(height =>10, width => 5)->box() }</td>
</tr>
</table>
eot
Ctrl-D
<table>
<tr>
<td><img src="p.gif" height="5" width="10"></td>
<td><img src="p.gif" height="10" width="5"></td>
</tr>
</table>
but thats just silly ;0)
dont forget:
> > see:
> >
> > [EMAIL PROTECTED] wadet]$ perldoc perlref
and for a real good time, check out
[EMAIL PROTECTED] wadet]$ perldoc perllol
> Quite ingenious. While I'm sure I'll regret it later (and curse your good
> name as I'm wishing I'd taken the time to learn Mason or HTML::Template)
> this seems like a great quick fix for the time being. And it never hurts
to
> learn a few new tricks!
Unfortunately theres nothing there I came up with on my own, and yes, new
tricks are always good for the 'ol grab bag =0).
HTH,
Todd W.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]