yucani has asked for the wisdom of the Perl Monks concerning the following question:

I am starting to program some scripts for apache / mod_perl and have following problem.
Im reading a source file and after some calculation writing out the results. Runs very well, but if do change the source data, my script does work well except the code which is written out to the file in subroutines. After changing the script (deleting a space char or inserting a ; ) the code works well.
It seems that my code has an error and the $File handle does not work correct in the subroutine.
{Envirement Apache/2.2.3 (Win32) mod_perl/2.0.3-dev
Perl/v5.8.8 }

Code Snippet:

#!/usr/local/bin/perl use strict; use warnings; use DBI(); my $FILE2; ....... open($FILE2,">c:\\$ref->{'id'}") or die "error\n"; binmode(FILE2); print $FILE2 pack('C', $ref->{'id'}); # format ....... sub print_obj { my ($dbh2,$ptyp,$pid,$mid) = @_; my $st2 = $dbh2->prepare("SELECT * FROM o$ptyp WHERE id=$pid"); $st2->execute(); ....... print $FILE2 pack('C', length $ba); print $FILE2 $ba; print "o"; } } $st2->finish(); }

Edit: g0n - code tags

Replies are listed 'Best First'.
Re: file subroutine
by davido (Cardinal) on Dec 20, 2007 at 02:14 UTC

    We don't get to see how you're invoking print_obj(), and it sounds like that matters, right? Regardless of what the actual unseen problem is, you should be using placeholders in your prepare().


    Dave

      Hello, here is the print obj call
      if($ref->{'objID00'}) { print_obj($dbh,$ref->{'objTYP00'},$ref->{'objID00'}); }
      Parameters are the DBI handle, and two strings from a last DBI call.
      What do you mean by 'placeholders' in prepare.
      with kind regards