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

Newbie here: I Installed: Algorithm::Combinatorics from Cpan. The install went fine. I make this script:
#!usr/bin/perl use warnings; use strict; use Algorithm::Combinatorics qw(combinations); my @data = qw(1, 2, 3); # scalar context gives an iterator my $iter = permutations(\@data); while (my $p = $iter->next) { # ... } # list context slurps my @all_permutations = permutations(\@data);"
I get this answer:

Can't locate Algorithm/Combinatorics.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at combinations.pl line 4.

What is @INC? Why is Algorithm/Combinatorics.pm not located?

# Update: My mistake. Algorithm/Combinatorics.pm was not installed correctly.

Replies are listed 'Best First'.
Re: script doesn't run
by bitingduck (Deacon) on Mar 19, 2015 at 04:24 UTC

    @INC is the set of paths that Perl searches to find modules. Is your CPAN somehow configured strangely, or maybe you have multiple perl installs and if you're running by making the file executable you're running under a different Perl than you think?

    Aside from that, there are other errors in the program- you import "combinations" but then call "permutations", and you shouldn't have the commas in the qw(1 2 3)

    fixed version (with output):

    #!usr/bin/perl use warnings; use strict; use Algorithm::Combinatorics qw(combinations permutations); use Data::Dumper; my @data = qw(1 2 3); # scalar context gives an iterator my $iter = permutations(\@data); while (my $p = $iter->next) { # ... } # list context slurps my @all_permutations = permutations(\@data); print Dumper(@all_permutations);

    UPDATE: I just noticed that the shebang is missing the leading "/" after the "!", too...