Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^2: Can't locate module in @INC when executing script over SSH

by Leudwinus (Scribe)
on Jan 27, 2023 at 19:39 UTC ( [id://11149954]=note: print w/replies, xml ) Need Help??


in reply to Re: Can't locate module in @INC when executing script over SSH
in thread Can't locate module in @INC when executing script over SSH

Thank you for taking the time to reply to help me out! Adding use local::lib did not work unfortunately. Even though I have local::lib installed on the remote machine, I now get this error:

Can't locate local/lib.pm in @INC (you may need to install the local:: +lib module) (@INC contains: /usr/local/lib/perl5/site_perl/mach/5.32 +/usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.32/mach /usr/lo +cal/lib/perl5/5.32) at ./json_test line 4. BEGIN failed--compilation aborted at ./json_test line 4.

but what did end up solving it was to replace this line:

use lib "/home/user/perl5/lib";

with this line:

use lib "/home/user/perl5/lib/perl5";

I do include both the use strict; and use warnings; pragmas in all of my programs but omitted them here for clarity and brevity. Perhaps I'll include them in the future to propagate better coding hygiene!

Edited to add: This solution still feels "off" as it isn't very portable. So any other suggestions would still be appreciated.

Replies are listed 'Best First'.
Re^3: Can't locate module in @INC when executing script over SSH
by haukex (Archbishop) on Jan 27, 2023 at 20:26 UTC
    Even though I have local::lib installed on the remote machine, I now get this error: Can't locate local/lib.pm in @INC

    Do you know where you installed it? If you have root access to the remote machine, you could install local::lib to the system Perl (e.g. on Debian-based systems: sudo apt-get install liblocal-lib-perl), or you could ask the admin to do so.

    So any other suggestions would still be appreciated.

    Sure, there are lots of other ways. For example, you could build your own Perl in your home directory using perlbrew, that'll then be a self-contained install with all modules in its installation directory, so that when you run your script on that perl, there'll be no confusion about where the modules are because they'll all be in the @INC compiled into Perl. I list a few more ways of how to set @INC in this node, but which one is best in your case depends on several factors, like whether you have root on the remote machine, whether you can build your own Perl, whether this script is going to need to be portable across many machines, or just one or two, and so on - if you provide more details on your situation we can probably make better recommendations.

    Edited to add

    AFAICT that's not the only edit you made, at first your node didn't contain the error message regarding local::lib. Please mark all significant edits, see How do I change/delete my post?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11149954]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2024-04-18 02:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found