Chris Coggins <cacogg...@cox.net> asked: > I'm having trouble getting a piece of data from a form input to print > in html. Here's the relevant portion of my code > > sub subroutine { > my($hash) = shift; > my($data) = "$hash->{'expl'}"; > > print "Content-type: text/html\n\n"; > print <<STOPHTML; > <div class="empdata">This employee has $data</div> > STOPHTML > } [...] > I either get a 500 error or the $data string is not there as in the > first instance of code. Can someone help?
Some notes on your code: For once, you should not be writing "my($variable)" in an assignment unless you have understood its difference to writing "my $variable". To wit: $ perl -wle 'my $data = localtime; print $data' Mon Apr 12 11:25:22 2010 $ perl -wle 'my( $data ) = localtime; print $data' 28 Or as another example: $ perl -wle 'sub foo { print wantarray ? "List context" : "Scalar context" } ; my( $data) = foo()' List context $ perl -wle 'sub foo { print wantarray ? "List context" : "Scalar context" } ; my $data = foo()' Scalar context => Using my() on the left side of an assignment creates a list context. There are functions like localtime that return different things depending on the context that they've been called from. Use my( $variable ) in an assignment only if you want to grab the first item of an array and discard all of the other data. The other things is that you force extrapolation by saying "$hash->{'expl'}";. Not only is is superfluous in most instances, but it can hurt you, too, if the thing you're extrapolation isn't a string. As for you initial problem, there's too little here to do an autopsy. The list guidelines recommend that you post a minimal code sample that'll reproduce your problem. Without access to that sample, I can only recommend that you run your code with "use CGI::Carp qw/fatalsToBrowser/;" to capture and print the error messages you're not seeing. HTH, Thomas -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/