yeti has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

I am very new to Perl and am trying to run my first proper script, which makes use of PDF::FromHTML. When I do I get the following error:

Can't locate PDF/FromHTML.pm in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-multi-2level /Library +/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Net +work/Library/Perl/5.12 /Library/Perl/Updates/5.12.3 /System/Library/P +erl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System +/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/ +Perl/Extras/5.12 .)

Now I have installed PDF::FromHTML using CPAN and can confirm that it was added to my perllocal.pod, as this extract shows.

=head2 Wed Aug 7 09:04:20 2013: C<Module> L<PDF::FromHTML|PDF::FromHT +ML> =over 4 =item * C<installed into: /opt/local/lib/perl5/site_perl/5.12.4> =item * C<LINKTYPE: dynamic> =item * C<VERSION: 0.31> =item * C<EXE_FILES: script/html2pdf.pl> =back

But it would appear that the paths are not being added to the @INC and I can't figure out why. I would appreciate it if anyone could give me advice on how to get around this problem.

Thanks Bevan

Replies are listed 'Best First'.
Re: Paths not added to @INC
by kcott (Archbishop) on Aug 12, 2013 at 07:34 UTC

    G'day yeti,

    Welcome to the monastery.

    The @INC listing you show is from your Mac OS X System perl (i.e. /usr/bin/perl).

    The location of PDF::FromHTML (i.e. /opt/local/lib/perl5/site_perl/5.12.4) suggests MacPorts perl (i.e. /opt/local/bin/perl).

    If you run your script as MacPorts perl, that will probably fix your problem; however, I don't know how you are running it. If you're using something like

    $ script_name.pl

    then you probably need to change the shebang line (that's line 1 in your script) to start with

    #!/opt/local/bin/perl

    If you're using something like

    $ perl script_name.pl

    then changing it to

    $ /opt/local/bin/perl script_name.pl

    should fix your immediate problem but will be a pain to type in every time you run a script. What you really want is for perl to point to /opt/local/bin/perl: see your MacPorts documentation for how to set this up.

    -- Ken

      Thanks for the quick responses guys.

      I have corrected the path in the shebang and it has started working...

      ... of course I am now getting a different error but that's only to be expected from my first script. :P

      Thanks for the help!

        Hello yeti, and welcome to the Monastery!

        of course I am now getting a different error

        As you are “very new to Perl,” I will draw your attention to the following excellent tutorial from the Monastery’s archives:

        In particular, it’s a good idea to begin each script with:

        use strict; use warnings; use diagnostics;

        Hope that helps,

        Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Re: Paths not added to @INC (two perls, which perl, head -n2 `which cpan` )
by Anonymous Monk on Aug 12, 2013 at 07:08 UTC

    you probably have two perls installed, so fix your shebang

    so however you ran cpan , run it again, then see which perl is running with

    cpan[1]> !print $^X,$/; C:\perl\bin\perl.exe

    You can compare to whichever cpan you're running  head -n2 `which cpan`

    Or run  which perl and run perl yourfile which will always use the current perl (first perl in $PATH ), which should be the same as the perl of first cpan in path