[Purdue-pm] help!
MCNAMARA, KEN
km1921 at att.com
Wed May 16 10:53:31 PDT 2012
The sub routine returns the ‘last evaluated expression’.
If you wrote (in the body of the subroutine):
my $value;
while(<FH>) { $value = $_; }
return $value;
Then you get the contents of the file as intended.
my $next = <FH>; -- is meaningless since FH was already at end of file in “while(<FH>)”.
KenMc
From: purdue-pm-bounces+km1921=att.com at pm.org [mailto:purdue-pm-bounces+km1921=att.com at pm.org] On Behalf Of Bradley Andersen
Sent: Wednesday, May 16, 2012 1:49 PM
To: Joe Kline
Cc: mark at purdue.edu; Purdue Perl Mongers
Subject: Re: [Purdue-pm] help!
I have just confirmed using the latter (new) method that the first <FH> does not do what I had thought (skip first line of the file read).
So Joe's comment about trying to be too clever on that bit looks correct.
On Wed, May 16, 2012 at 1:27 PM, Bradley Andersen <bradley.d.andersen at gmail.com<mailto:bradley.d.andersen at gmail.com>> wrote:
Yeah, in the end I don't care if it is clever or not, so long as the code works and it is readable :)
On Wed, May 16, 2012 at 1:25 PM, Joe Kline <gizmo at purdue.edu<mailto:gizmo at purdue.edu>> wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 05/16/2012 01:20 PM, Bradley Andersen wrote:
> ok, i just fixed it, but i'd like to still figure out why it worked
> then stopped. there must be something wrong with the earlier
> logic. for reference, here's what i did:
>
> i replaced: 1999 #####open(FH,
> "$base/helping$full.html") || die "\n\nCould not READ
> $base/helping$full.html: [$!]\n\n"; 2000
> #####$tpl->param("m$full" => do { local $/; while (<FH>) { my $next
> = <FH>; } });
>
> with: 2001 2002 my $contents; 2003 { 2004
> local $/; 2005 open(FH, "$base/helping$full.html")
> || die "\n\nCould not READ $base/helping$full.html: [$!]\n\n"; 2006
> $contents = <FH>; 2007 close(FH); 2008
> } 2009 $tpl->param("m$full" => $contents);
>
> Can you see immediately why the first one would be no good? It
> almost seems like the tpl->param is not being set as a string.
> That is, clearly it reads it, but it is not assigning the result
> properly as a string. All I got were undefs in the log for the
> earlier logic. I am 199% sure this worked using the earlier logic
> yesterday.
>
Brad,
I don't see much of a reason why the file slurping wasn't
working...maybe that bit to strip the first line out was a bit too much?
It took me a bit to figure out why that slurp line looked familiar but
odd:
http://www.modernperlbooks.com/mt/2009/08/a-one-line-slurp-in-perl-5.html
I guess just an example where the less clever option worked out better.
joe
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk+z4xwACgkQb0mzA2gRTpkaZwCghpbMGF2dWaw0kiEXaEjWf0Uy
hQsAn2YFkhpY5WPmVPe9BsMTTSC7gphi
=uVn0
-----END PGP SIGNATURE-----
_______________________________________________
Purdue-pm mailing list
Purdue-pm at pm.org<mailto:Purdue-pm at pm.org>
http://mail.pm.org/mailman/listinfo/purdue-pm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/purdue-pm/attachments/20120516/15912e36/attachment.html>
More information about the Purdue-pm
mailing list