Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
11 / 0 / 0
Регистрация: 17.04.2010
Сообщений: 40
1

Запустить perl-скрипт из perl-скрипта

09.12.2014, 18:32. Показов 3121. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Есть главный скрипт и ещё один. Последний нужно запустить из главного, передать в него параметры и результаты его работы получить обратно в главный , не выводя на печать.
Как это реализовать и что прописать в этих скриптах?

Пусть, например, главный - main.pl b и второй sc1.pl. Параметры - числа, результат - массив, или список.

Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2014, 18:32
Ответы с готовыми решениями:

Запустить perl скрипт в денвере
Здравствуйте, нужно написать скрипт в perl, нашел пример, но при активации ссылки на скрипт, денвер...

Как запустить скрипт Perl
Perl не входит в стандартную поставку ОС Windows, но его можно бесплатно скачать с нескольких...

Помогите запустить готовый Perl скрипт
Имею следующие бесплатные IDE: Mastak Absolute Perl Perllive Collie Perl Shell Perl Express...

Как запустить perl-скрипт в браузере Windows
Почему не запускается скрипт .pl в браузере на Windows? Но стандартный скрипт printenv.pl,...

5
5989 / 1998 / 323
Регистрация: 10.12.2013
Сообщений: 6,882
09.12.2014, 19:17 2
Запуск скрипта Perl из скрипта Perl

1) в твоём случае лучше всего самая первая ссылка на документацию - через оператор do

при передаче и возврате параметров использовать our.
и не забыть вернуть true ( 1; ) последним оператором вызываемого скрипта;

2) либо оформить вызываемый скрипт как модуль и использовать в вызывающем use или require.

Добавлено через 12 минут
main.pl
Perl
1
2
3
4
5
6
7
8
use strict;
 
our $iparam = 100;
our $oparam;
 
do "eee.pl";
 
print $oparam;
eee.pl
Perl
1
2
3
4
5
6
7
8
9
use strict;
 
our $iparam;
 
print "Input was $iparam\n";
 
our $oparam = $iparam * 10;
 
1;
1
11 / 0 / 0
Регистрация: 17.04.2010
Сообщений: 40
10.12.2014, 09:37  [ТС] 3
Делаю:

main.pl:
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl -w
 
use POSIX;
use Math::Trig qw( deg2rad);
use strict;
 
#считываем(не обязательные) параметры из командной строки
($maxN, $faultN,$faultangle,$m)=@ARGV;
our $maxN=100                           if 
 
(!defined $maxN);
our $faultN=5                           if 
 
(!defined $faultN);
our $faultangle=45                          if 
 
(!defined $faultangle);
$m=10                               if 
 
(!defined $m);
# заводим массив для выходный данных генерации
our @gen;
#в цикле запускаем скрипты и сохраняем результаты
$j=0;
foreach $j (0..$m-1)
do "gen-rnd-fault.pl";
print @gen;
 
   };
gen-rnd-fault-geo.pl:
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl -w
use Math::Trig qw( deg2rad);
use strict;
 
#use Math::Random::MT  qw(srand rand);
 
#use Math::Random::Secure  qw(srand rand);
use Geo::Ellipsoid;
...
# забираем параметры
our $maxN;
our $faultN;
our $faultangle;
our @gen;
print "Input was $maxN\n";
print "Input was $faultN\n";
print "Input was $faultangle\n";
....
sub write_eql2($$)
...
 
our @gen=@p;
(в этом коде многоточия означают, что приведена только необходимая часть кода, а не весь код)
Пытаюсь запустить. По поводу переменных $faultN, $maxN, $faultangle, $m, $j появляется сообщениеЖ Global symbol $... rewuires explicit package name at C:... main.pl.
Но ведь я их и так определяю.

И можно ли этим способом передавать файлы, или необходимо сначала в main считать их содержимое и уже его передавать параметром?
0
5989 / 1998 / 323
Регистрация: 10.12.2013
Сообщений: 6,882
10.12.2014, 14:57 4
main.pl:8#считываем(не обязательные) параметры из командной строки
Perl
1
our($maxN, $faultN,$faultangle,$m)=@ARGV;
Цитата Сообщение от winda Посмотреть сообщение
И можно ли этим способом передавать файлы
всё сильно похоже на ерунду.
что значит передавать файлы?

почему бы не иметь в main.pl

sub gen-rnd-fault-geosub () ?

Если же это будет независимый прикладной модуль,
тогда он и оформляется как модуль.
как это делать? - неожиданный совет: см. документацию
0
11 / 0 / 0
Регистрация: 17.04.2010
Сообщений: 40
10.12.2014, 19:12  [ТС] 5
почему бы не иметь в main.pl

sub gen-rnd-fault-geosub () ?

Он уже есть как отдельный модуль, а иметь эту подпрограмму в main было бы логичным, если бы она одна запускалась из неё. А там будут ещё скрипты, которые надо будет запускать из msin. Все они будут запускаться в цикле от 0 до m-1 , т. е. m раз. Так что sub gen-rnd-fault-geosub () - не самый удобный способ.

всё сильно похоже на ерунду.
что значит передавать файлы?

Просто ещё один скрипт, который надо будет запускать из main, сделана так, что входные даннные считывает из файла, и не очень хочется её переписывать по-другому

А за помощь спасибо.
0
5989 / 1998 / 323
Регистрация: 10.12.2013
Сообщений: 6,882
10.12.2014, 21:18 6
раз уж мне сказали спасибо,
скажу и я пожалуйста в след. форме:

приведённые куски кода, размазанные по отдельным файлам, сильно похожи на помойку;

язык программирования - это культура,
а написанные на этом языке программы - это культурное наследие
так же как и письменные и устные формы обычного языка являются культурой,
а писать комментарии
Perl
1
# заводим массив для выходный данных генерации
- это безкультурье, которое, впрочем, органично вписывается в ту помойку,
которую тут продемонстрировали.
0
10.12.2014, 21:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2014, 21:18
Помогаю со студенческими работами здесь

Запуск скрипта Perl из скрипта Perl
Доброго времени суток! Подскажите/направьте, как собственно запустить скрипт из скрипта и получить...

Задачки на понимание Perl (Скользкие места Perl)
Задача на понимание списочных литералов что выведет каждая из строк $num = ('один', 'два',...

Графика в Perl, как создать GIF в Perl.
Помогите создать GIF при помощи перла. И где взять модули?

Переводчик кода Си в Perl(Convert C to perl)
Нужна такая вещь, а в идеале код такой программы.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru