Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача параметров в скрипт, как передать ??? 
:(
    Опции темы
VackuM
Дата 28.5.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 15.5.2006

Репутация: нет
Всего: нет



Допустим, есть скрипт который создает файл.
Меня интересует, как можно из командной строки передать ему название этого файла.

например:
root# perl myscript.pl -testfile.txt

и скрипт создаст testfile.txt

PM   Вверх
shamber
Дата 28.5.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 1
Всего: 18



смотри в сторону ARGV[0]
А вообще поиск рулит

Это сообщение отредактировал(а) shamber - 28.5.2007, 11:35
PM MAIL Jabber   Вверх
nitr
Дата 28.5.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 2
Всего: 84



верно сказано smile
Код

#!perl -w
print join("\n", @ARGV);

А так же можно использовать модули... про них тоже уже писалось (Getopt::Std).
в папке path_to_perl/lib есть два файлика smile
getopt.pl
getopts.pl
, глянь smile

Добавлено через 2 минуты и 55 секунд
читать тут smile ...Perl/html/lib/Getopt/Std.html


--------------------
PM   Вверх
averinbox
Дата 29.11.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.10.2008

Репутация: нет
Всего: нет



А можно примерчик ? :( не доходит до меня это . Принцип такой в скрипт передаётся параметр -а  значит страбатывает  правило фаервола например. -d удаляется правило. Прочёл всё что посоветовали чтото не догнал.
Заранее спасибо. 
PM MAIL   Вверх
KSURi
Дата 29.11.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 5
Всего: 27



Цитата(nitr @  28.5.2007,  11:52 Найти цитируемый пост)
в папке path_to_perl/lib есть два файлика smile
getopt.pl
getopts.pl, глянь smile

вот вам целых два примерчика


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
amg
Дата 30.11.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 9
Всего: 50



averinbox, для простых случаев можно обойтись и без ипользования модуля Getopt и других. В перл встроена поддержка параметров командной строки (опция перла -s).
Например, для вызова script.pl -a -d=xyz
Код
#!/usr/bin/perl -ws
use vars qw($a $d); # Чтобы не было warnings на однократное использование переменных
if ($a) {
  # ...
}
if ($d eq 'xyz') {
  # ...
}


PM MAIL   Вверх
ISQman
Дата 4.12.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



#myscript.pl testfile.txt

Код

#!/usr/bin/perl

#далее можно делать с @ARGV всё что угодно
#а можно откроыть дескриптор и писать данные в файл)

@array="some data";
open (MYFILE, > $ARGV[0]) || die "maza faka";
close  (MYFILE);

#так к примеру создался файл testfile.txt с содержанием some data

PM MAIL ICQ   Вверх
KSURi
Дата 4.12.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 5
Всего: 27



ISQman,
во-первых вы пропустили кавычки во втором и третьем параметрах open (надесь вы хотели использовать именно такую форму вызова =):
Код

open(MYFILE, '>', 'FILENAME')

во-вторых, подстановка $ARGV[0] без предварительной фильтрации чревата уязвимостью, которая позволит исполнять команды в системе

Это сообщение отредактировал(а) KSURi - 4.12.2008, 19:45


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
ISQman
Дата 5.12.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



я всего лишь привёл пример как можно сделать 
а насчёт функции open
Код

open(MYFILE, '>', 'FILENAME')

можно также использовать вид 
Код

open(MYFILE, ">FILENAME");


перл сам по себе очень гибкий и форм записи столько же, сколько будет наших мнений) главное чтобы они были правильны по синтаксису.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.