Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

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.

Comment on Preprocessor, library files
Select or Download Code
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 the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (10)
As of 2016-05-03 18:47 GMT
Find Nodes?
    Voting Booth?