Hi Thomas,
> Let's see if I understand this correctly:
>
> You have a global variable $mode that's deciding the mode of operation
> in your sub dblog(), to quote:
>
> > # DBLOG sub-function
> > sub dblog {
> > my ( $backup, $dbvers, $sdb ) = @_;
> > SWITCH: {
> > ( $mode eq "b" ) && do {
> > print $fh_dblogsql "insert into dbmovelog (DEBENAME,
> MOVE, FELD1, FELD2, ERSTELL_TS) values ('".$db."', '".$mode."',
> '".$backup."', '".$dbvers."', sysdate);";
> > last SWITCH;
> > };
> > ( $mode eq "t" ) && do {
> > print $fh_dblogsql "insert into dbmovelog (DEBENAME,
> MOVE, FELD1, FELD2, ERSTELL_TS) values ('".$db."', '".$mode."',
> '".$sdb."', sysdate);";
> > last SWITCH;
> > };
> > }
> >}
Correct.
> Depending on the value of $mode, you run two slightly different SQL
> statements. The second of them with the wrong number of values ;-)
Uhm, correct as well ... copy&paste accident ... sorry :)
> From the look of things, $backup and $sdb are really the same thing,
> namely input for the column FELD1.
Correct.
> My gut feeling is that you should pass $mode as an argument to the
> function since it's never nice to have a subroutine that does two
> different things without an obvious reason.
Right, I simply forgot about that. $mode isn't used as a global variable so I
had to do that anyway.
> I'd then coalesce $backup and $sdb into the variable $feld1 and
> suddenly you don't need your "switch" anymore.
No, can't do that. $backup is a dirname, $sdb is another, and I need them both
separate.
> Apart from that, there's really no need to call a three argument
> function with three arguments when you know you don't need the third
> argument.
>
> Just call it with two arguments in that case, and the troublesome
> variable will be set to undef.
I did as you suggested, and it works now, thank you :)
Kind regards,
Nora
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/