Проблемы с использованием модулей Perl и передачи переменных в подпрограммы - PullRequest
0 голосов
/ 14 октября 2019

Итак, я новичок в языке программирования Perl и хочу познакомиться с созданием, использованием и передачей параметров в модули. Я создал модуль hello world, который принимает в качестве параметра две строковые переменные из программы тестирования main.pl, один из которых говорит «hello», а другой - «world» и распечатывает их. Каждый раз, когда я пытаюсь запустить main.pl, я продолжаю получать ошибки, и я трачу много дней, пытаясь заставить эту простую программу работать правильно.

Это код моей функции main.pl:

use FindBin;
use lib $FindBin::Bin;
use test;
use strict;
my $firststring = "hello";
my $secondstring = "world";
test::printthing(\$firststring, \$secondstring);

И это код моего модуля test.pm:

package test;

use strict

use Exporter;
our @ISA = qw/Exporter/;
our @EXPORT = qw/&main/;

sub printthing{
    my $firstword = $_[0];
    my $secondwork = $_[1];
    print"$firstword\n";
    print"$secondword\n";
}1;

1 Ответ

1 голос
/ 14 октября 2019
  • Вам не хватает точки с запятой в конце строки use strict в модуле.
  • Вы пытаетесь экспортировать подпрограмму main(), но в вашем модуле нет подпрограммызвонил main().
  • Вы передаете ссылки на свои переменные в подпрограмму, но не разыменовываете их перед печатью.

Для окончательной точки вы можете либо продолжить проходв ссылках, но разыменование перед печатью.

test::printthing(\$firststring, \$secondstring);

# and then in the subroutine...

print"$$firstword\n";
print"$$secondword\n";

Или вы можете просто передать переменные и полностью игнорировать ссылки.

test::printthing($firststring, $secondstring);

# and then in the subroutine...

print"$firstword\n";
print"$secondword\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...