Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Preprocessor, library files

by James Board (Beadle)
on Dec 26, 2008 at 19:33 UTC ( #732700=perlquestion: print w/replies, xml ) Need Help??
James Board has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks,

The following is a working perl script (
#!/usr/bin/perl -P use strict; #define C 10 my $var = C; print $var . "\n";
However, if I include that in another perl file as a library, it no longer works:
#!/usr/bin/perl -P require "";
The problem is that the preprocessor (notice the -P switch) isn't processing included library files. Is there any way to make the preprocessor process included files?


Update: This is a contrived example. I simplified it for this forum to isolate the problem, which is the fact that the preprocessor ignores included library files. In reality, I have several perl library files which I created, and I want subroutines in those files to be able to call the same subroutine messageLog() and have it behave differently based on which file it was called from (so I can turn off/on message logging from a specific file). I don't know if I can do that with Perl syntax, but I know I can do it with macros: just define the macro for messageLog() at the beginning of each file.

Replies are listed 'Best First'.
Re: Preprocessor, library files
by Jenda (Abbot) on Dec 26, 2008 at 20:00 UTC
Re: Preprocessor, library files
by gwadej (Chaplain) on Dec 26, 2008 at 19:43 UTC

    I had forgotten all about -P.

    perlrun recommends avoiding -P. As another option, it suggests Filter::cpp. Maybe it's worth a look.

    G. Wade
Re: Preprocessor, library files
by webfiend (Vicar) on Dec 26, 2008 at 19:45 UTC

    From perlrun:

    NOTE: Use of -P is strongly discouraged because of its inherent problems, including poor portability. It is deprecated and will be removed in a future version of Perl.


    If you’re considering using "-P", you might also want to look at the Filter::cpp module from CPAN.

    Update: I'm too slow. Oh well. Why do you want the preprocessor, anyways? I'd think that using a plain old variable would work just fine in that circumstance.

Re: Preprocessor, library files
by webfiend (Vicar) on Dec 27, 2008 at 06:28 UTC

    Oh, you want to find-tune logging behavior for particular files in your project? Have you taken a close look at log4perl? It gives you a lot of fine-grained control over your logging, down to which packages get what level of debugging. Maybe that'll fit for you.

Re: Preprocessor, library files
by spmlingam (Scribe) on Dec 27, 2008 at 06:19 UTC

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://732700]
Approved by planetscape
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (8)
As of 2018-01-23 16:20 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (248 votes). Check out past polls.