Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

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
[Discipulus]: if known where i can read about the matter?
[choroba]: he's not really sick, we just got nobody to look after him today
[Discipulus]: create an account for him; we are funny baby sitters ;=) come here child, want to listen the typeglob tale?
[vrk]: choroba Oh, that's good.
[vrk]: Discipulus I don't know much about prime numbers, but wouldn't that kind of an answer be in a graduate-level number theory book?
[Discipulus]: my 8 yo daughter has two weeks of sleep disturbs.. we are gonna be crazy..
[Discipulus]: vrk i searched but found nothing: after this my math level if terribly low but i like to discuss my discovery with kind mathematicians

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2017-04-27 08:01 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (501 votes). Check out past polls.