У вас не было полностью включено Perl warnings
. Вы бы увидели несколько предупреждений. Я включил предупреждения как в bash (используя -w
в однострочном Perl), так и в Perl с use warnings;
. Строка shebang игнорируется в файле .pm
, поскольку она не выполняется как сценарий.
isValid
вернул строку, но вы проигнорировали возвращенное значение. Чтобы исправить это, используйте print
в однострочном тексте.
Вам также необходимо правильно передать значение isValid
.
Наконец, вам нужно использовать eq
вместо ==
для сравнения строк.
bash:
#!/bin/bash
ARG="valid"
VAL=$(perl -w -I. -MperlThing -e "print perlThing::isValid(q(${ARG}))")
echo $VAL
Perl:
use strict;
use warnings;
package perlThing;
sub isValid
{
my $arg = shift;
if($arg eq "valid")
{
return "good";
}
else
{
return "bad";
}
}
1;