Re: Making a Copy of a template object

"cfaust-dougot" <[email protected]> Fri, 19 Dec 2008 08:52:37 -0500
Newsgroups gmane.comp.lang.perl.modules.html-template
Message-ID <[email protected]>
Thanks Sébastien, Damien and Michael.
 
I'm really trying to split the current template object into 2 different objects after I've assigned a bunch of things to it (one ends up being for display and the other gets emailed), so I guess I should check out that storable module as if I just invoked the "new" method again I would have to reassign everything again to the new object, right?
 
Thanks!
-Chris

________________________________

From: Damien Clark [mailto:[email protected]]
Sent: Thu 12/18/2008 6:15 PM
To: cfaust-dougot; [email protected]
Subject: Re: [htmltmpl] Making a Copy of a template object


Hi Chris,

Where you have the statement:

$template2 = $template ;

Essentially what you are doing here is creating a variable $template2 that points to the same object as referenced by $template.  An object in perl is a blessed reference and so you have just made a copy of a reference.  So $template2 and $template point to the same object.  

If you wish to make a true copy of the object, you will need to look at things like Data::Dumper or better still the Storage module which has freeze and thaw subroutines.  Hopefully this will achieve what you want.

All the best.

Regards,
Damien.


On 19/12/08 7:32 AM, "cfaust-dougot" <[email protected]> wrote:



	Folks,
	
	I'm trying to create 2 different vars from the same template object and it appears once I do so that whatever I set in one gets set in the other. What am I missing? Is it because I'm creating a reference? (I didn't think that was the case).
	
	Here is an example of what I mean
	
	my $template_object = qq|<TMPL_IF NAME="Var1"> Var 1 is set</TMPL_IF><TMPL_IF NAME="Var2"> Var 2 is set</TMPL_IF>|;
	
	my $template = HTML::Template->new(scalarref    => \$template_object);
	 
	$template->param(Var1   =>      1);
	
	my $template2 = $template;
	
	$template2->param(Var2  =>      1);
	 
	print $template->output();
	 
	The output I get is: "Var 1 is set Var 2 is set" even though I set "Var2" only in $template2 only
	 
	 
	TIA!
	-Chris
	
	
________________________________

	------------------------------------------------------------------------------
	SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
	The future of the web can't happen without you.  Join us at MIX09 to help
	pave the way to the Next Web now. Learn more and register at
	http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
	
________________________________

	_______________________________________________
	Html-template-users mailing list
	[email protected]
	https://lists.sourceforge.net/lists/listinfo/html-template-users

------------------------------------------------------------------------------

_______________________________________________
Html-template-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/html-template-users