On Sat, Dec 11, 2010 at 10:52:16PM -0500, Jeffrey J. Kosowsky wrote:
> Jeffrey J. Kosowsky wrote at about 22:46:20 -0500 on Saturday, December 11, 
> 2010:
>  > As some of you may know, I have been successfully adding perl script
>  > to the machine config files.
>  > 
>  > However, I just noticed that if I add a system command using
>  > backquotes, then I get an error of form:
>  >    dump failed: Can't read PC's config file: Couldn't open 
> /etc/BackupPC/pc/mymacine.pl.pl: Bad file descriptor
>  > 
>  > or of form:
>  >    dump failed: Can't read PC's config file: Couldn't open 
> /etc/BackupPC/pc/consult.pl: No such file or directory
>  > 
>  > However, whether or not the error appears seems to depend on what perl
>  > statements follow the backquoted command. In particular, having a
>  > 'print' statement follow or even just a '1;' stops the error. But
>  > having a 'variable = undef' statement causes the error to show.
>  > 
>  > This seems weird. Any idea what might be going on here?
>  > I assume it must be setting some type of variable or return value or 
> changing
>  > something in the stack that signals that the sourcing of the config script 
> failed.
> 
> OK. Here is some more info.
> The error occurs if:
> 1. There is a backquoted system command
> 2. The last statement in the config file evaluates to 'undef' (no
>    matter how many other statements there seem to be between the system
>    command and the final statement)

Well required/do'ed files usually have a 

  1;

at the end of the file to allow the import mechanism to succeed and it
looks like that also works in your case. Having the evaluated file
result in undef is an error (see perlfunc require which makes
reference to do and eval) which ends with:

     The file must return true as the last statement to indicate
     successful execution of any initialization code, so it's
     customary to end such a file with "1;" unless you're sure it'll
     return true otherwise.  But it's better just to put the "1;", in
     case you add more statements.

what backquoted command are you using? Is it assigned to a variable?
Does it return output that is interpreted as true. Since the
successful exit status from a successful shell command is 0, that
could become the final result of the eval'ed file and hence your
issues. `...` is a perl op and I am not quite sure what it returns but
the above seems plausible.

-- 
                                -- rouilj

John Rouillard       System Administrator
Renesys Corporation  603-244-9084 (cell)  603-643-9300 x 111

------------------------------------------------------------------------------
Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL,
new data types, scalar functions, improved concurrency, built-in packages, 
OCI, SQL*Plus, data movement tools, best practices and more.
http://p.sf.net/sfu/oracle-sfdev2dev 
_______________________________________________
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:    https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:    http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/

Reply via email to