in reply to require "shared.pl" with use strict;

Please, fix the link:
[id://619554] ->Include subs from different perl file

Also, you cannot export lexical variables (declared with my). You can export package global variables (declared with our), but it's not recommended. It seems the thread mentions it.

لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Replies are listed 'Best First'.
Re^2: require "shared.pl" with use strict;
by DizietSma (Initiate) on Feb 19, 2015 at 17:05 UTC
    Link updated.
    What is the best way to import values from a shared file?
      No, you should use [id://NUMBER] to link to other nodes. See What shortcuts can I use for linking to other information?.

      The preferred thing to export from a module is a subroutine. Or, alternatively, you can switch to the object oriented approach.

      Shared.pm:

      package Shared; use warnings; use strict; use Exporter qw{ import }; our @EXPORT_OK = qw{ test_val test_list }; sub test_val { "hello world\n" } sub test_list { ( [ 'Shadow', 'Blinky' ], [ 'Speedy', 'Pinky' ], [ 'Bashful', 'Inky' ], [ 'Pokey', 'Clyde' ], ) } __PACKAGE__

      test.pl:

      #!/usr/bin/perl use warnings; use strict; use Shared qw{ test_val test_list }; print test_val(); for my $pair (test_list()) { print "@$pair\n"; }

      Object oriented

      Shared_OO.pm:
      package Shared_OO; use warnings; use strict; sub new { my $class = shift; bless { test_val => "hello world\n", test_list => [ [ 'Shadow', 'Blinky' ], [ 'Speedy', 'Pinky' ], [ 'Bashful', 'Inky' ], [ 'Pokey', 'Clyde' ], ], }, $class } sub test_val { shift()->{test_val} } sub test_list { @{ shift()->{test_list} } } __PACKAGE__

      test_oo.pl:

      #!/usr/bin/perl use warnings; use strict; use Shared_OO; my $o = 'Shared_OO'->new; print $o->test_val; for my $pair ($o->test_list) { print "@$pair\n"; }
      لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ