Я работаю над своим первым скриптом на Perl и стараюсь быть как можно более эффективным, повторно используя код, вместо того, чтобы иметь один и тот же код снова и снова. Я пробовал пару разных вещей уже безрезультатно.Сохранение групп команд для последующего использования в perl-скрипте
Я также пытаюсь не просто импортировать набор команд из внешнего файла, но сейчас он выглядит как единственный жизнеспособный вариант. Поэтому я ищу совета здесь.
Вот суть сценария (воспользовавшись селеном):
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use WWW::Selenium;
my @changepass;
my $addsub = '';
my $add2sub = '';
GetOptions (
"changepass|cp=s{3}" => \@changepass,
"addsub|as=s" => \$addsub,
"add2sub|a2s=s" => \$add2sub,
"help|h" => \&do_help
) or die(&do_help);
sub login {
my $sel = WWW::Selenium->new(
host => "localhost",
port => 4444,
browser => "*googlechrome",
browser_url => "example.com",
);
$sel->start;
$sel->open("/login.php");
$sel->wait_for_page_to_load("5000");
$sel->type("id=loginSection-username", "username");
$sel->type("id=loginSection-password", "password");
$sel->click("name=send");
$sel->wait_for_page_to_load("30000");
sleep(2);
return $sel;
}
sub do_changepass {
my $email = $changepass[0];
my $oldpass = $changepass[1];
my $newpass = $changepass[2];
my ($sel) = @_;
$sel->click("css=#my-webspaces-container .more > a");
$sel->wait_for_page_to_load("30000");
...MORE COMMANDS...
}
if (@changepass) {
print "Changing password...\n";
my $sel = do_changepass();
print "Finished!\n";
}
Так что я хотел бы, чтобы иметь возможность повторно использовать определенные блоки кода, такие как переменная my $sel
. Но я понимаю, что это объект. Если бы я мог как-то просто сохранить его в виде обычного текста, а затем импортировать его в функцию. (Не через внешний файл, если это возможно.)
Пожалуйста, не полностью меняйте свой вопрос. Он ставит ответы и комментарии, которые вы получили до изменения вне контекста. Одной из основных функций Stack Overflow является предоставление многоразовых решений для доступа других людей, и вы должны избегать всего, что делает сообщение менее понятным для всех. Вы всегда можете * добавить * к своему ответу, чтобы уточнить, что вы имеете в виду. – Borodin