imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 14.04.2004, 21:56     # 1
Shkurik
Junior Member
 
Аватар для Shkurik
 
Регистрация: 24.01.2002
Адрес: Украина, Киев
Пол: Male
Сообщения: 158

Shkurik Путь к славе только начался
Как в скритпе на перл обработать файл передаваемый скрипту в ком-й строке?

что-то вроде script.pl filename (в винд)
т.е. как передать имя файла скрипту?

Извините, я не знаю....


Спасибо!
__________________
Банзай!
Shkurik вне форума  
Старый 14.04.2004, 22:12     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
$argc
RaZEr вне форума  
Старый 15.04.2004, 10:57     # 3
Shkurik
Junior Member
 
Аватар для Shkurik
 
Регистрация: 24.01.2002
Адрес: Украина, Киев
Пол: Male
Сообщения: 158

Shkurik Путь к славе только начался
to Razer

$argc - ето как?

script.pl filename


listing script.pl:
open(file, filename);
while <file>
{....}

Извините за надоедливость...
Спасибо!
__________________
Банзай!
Shkurik вне форума  
Старый 15.04.2004, 14:32     # 4
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Все аргументы в массиве @argv ($argc нет, это меня на си занесло). Имя файла, как несложно догадаться, будет в первом элементе этого массива.
RaZEr вне форума  
Старый 15.04.2004, 16:55     # 5
rontommy
Добряк Модератор
ГлавБюстАтценка АН ИМХО.ВС
 
Аватар для rontommy
 
Регистрация: 14.10.2002
Адрес: Старый оценщик, НИИ ГлавБюстАтценка АН ИМХО.ВС
Пол: Male
Сообщения: 4 010

rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
Shkurik
Код:
$filename = shift @ARGV;
open(FILE, "$filename");
. . .
RaZEr
уточнение - ARGV большими буквами, тут вам не DOS
__________________
Лень - это когда видишь необходимость что-то делать, но не хочется, а влом - это когда что-то хочется, но не видишь необходимости это делать.
rontommy вне форума  
Старый 15.04.2004, 20:23     # 6
Shkurik
Junior Member
 
Аватар для Shkurik
 
Регистрация: 24.01.2002
Адрес: Украина, Киев
Пол: Male
Сообщения: 158

Shkurik Путь к славе только начался
to all
т.е. если зделать такой скрипт script.pl

$filename = shift @ARGV;
printf($filename);

и потом запустить его так

script.pl file

в окне должно напечататься имя файла - file?
- у меня не работает......

????????
__________________
Банзай!
Shkurik вне форума  
Старый 15.04.2004, 20:33     # 7
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
В скрипт параметры передаются следующим образом: script.pl?var1=value1&var2=value2 Для расшифровки этой строки вставь в скрипт строки:
Код:
# Get data from memory --------------------------------------------------------
if ($ENV{'REQUEST_METHOD'} eq "POST") {
  read(STDIN, $bufer, $ENV{'CONTENT_LENGTH'}); }
else {
  $bufer=$ENV{'QUERY_STRING'}; }    

# Decode data -----------------------------------------------------------------
@pairs = split(/&/, $bufer);
foreach $pair (@pairs) {
  ($name, $value) = split(/=/, $pair);
  $name =~ tr/+/ /;
  $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $FORM{$name} = $value; }
Потом находи значение параметра по его имени:
Код:
my $par1 = $FORM{var1};
Теперь у тебя есть имя файла. Открываешь его и записываешь содержимое в массив:
Код:
open (FILE, "$par1");
my @indata = <FILE>;
close (FILE);
После чего можешь обрабатывать массив. Если файл бинарный, то для считывания его содержимого необходимо использовать такой код:
Код:
my $fsize = -s "$par1";
open (FILE, "$par1");
binmode (FILE);
sysread (FILE, $indata, $fsize);
close (FILE);
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!

Последний раз редактировалось Ghost; 15.04.2004 в 20:36.
Ghost вне форума  
Старый 15.04.2004, 20:38     # 8
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Я бы конечно сказал "Ghost, старик, - мы тут шелл обсуждаем", если бы у меня небыло опасений ... хмм ...
RaZEr вне форума  
Старый 15.04.2004, 20:46     # 9
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
RaZEr
Прошу прощения, если сморозил что не то, но по посту автора темы не понял, что ему нужен именно "шелл".
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 15.04.2004, 20:50     # 10
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Странно другое - почему не работает вариант:
Код:
$filename = shift @ARGV;
printf($filename);
RaZEr вне форума  
Старый 15.04.2004, 21:35     # 11
rontommy
Добряк Модератор
ГлавБюстАтценка АН ИМХО.ВС
 
Аватар для rontommy
 
Регистрация: 14.10.2002
Адрес: Старый оценщик, НИИ ГлавБюстАтценка АН ИМХО.ВС
Пол: Male
Сообщения: 4 010

rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
Цитата:
Первоначальное сообщение от RaZEr
Странно другое - почему не работает вариант:
Код:
$filename = shift @ARGV;
printf($filename);
Так там написано "printf", а надо "print", не так ли ?
__________________
Лень - это когда видишь необходимость что-то делать, но не хочется, а влом - это когда что-то хочется, но не видишь необходимости это делать.
rontommy вне форума  
Старый 15.04.2004, 21:57     # 12
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
Так там написано "printf", а надо "print", не так ли ?
По идее да. Я просто забыл что printf в перле отличается от printf в других языках.
RaZEr вне форума  
Старый 16.04.2004, 10:32     # 13
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
RaZEr
Цитата:
Странно другое - почему не работает вариант
Ничего странного. Просто винда не передает параметры в скрипт. Нужно отредактировать описание типа файла pl следующим образом - см. аттач.
Изображения
Тип файла: gif pl_shell.gif (6.8 Кбайт, 19 просмотров - Кто скачивал? )
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 16.04.2004, 10:56     # 14
rontommy
Добряк Модератор
ГлавБюстАтценка АН ИМХО.ВС
 
Аватар для rontommy
 
Регистрация: 14.10.2002
Адрес: Старый оценщик, НИИ ГлавБюстАтценка АН ИМХО.ВС
Пол: Male
Сообщения: 4 010

rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
Цитата:
Ghost:
Ничего странного. Просто винда не передает параметры в скрипт. Нужно отредактировать описание типа файла pl следующим образом
Не знаю как у тебя, у меня на PC всегда работало без проблем, надо только сделать одно из двух :
1. Прописать Perl.ехе в переменной PATH, инсталляция это делает вроде автоматом, запускать все скрипты так :
Код:
perl.exe script.pl param1 param2 ...
2. Если по каким-либо причинам этого нет, запускать все скрипты так :
Код:
<C:\Path_to_install_Perl>\perl.exe script.pl param1 param2 ...
А вопрос был про PERL on Windows ?
__________________
Лень - это когда видишь необходимость что-то делать, но не хочется, а влом - это когда что-то хочется, но не видишь необходимости это делать.
rontommy вне форума  
Старый 16.04.2004, 11:00     # 15
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
rontommy
Если сделать то, что описал я, то можно будет запускать скрипты так:
Код:
script.pl param1 param2 ...
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 16.04.2004, 11:25     # 16
rontommy
Добряк Модератор
ГлавБюстАтценка АН ИМХО.ВС
 
Аватар для rontommy
 
Регистрация: 14.10.2002
Адрес: Старый оценщик, НИИ ГлавБюстАтценка АН ИМХО.ВС
Пол: Male
Сообщения: 4 010

rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
Ghost
Кому как удобно, в твоем варианте больше 10 параметров не передашь, у меня все скрипты запускаются из контекстного меню, а не из DOSовского окна. Для шелла есть UNIX !
__________________
Лень - это когда видишь необходимость что-то делать, но не хочется, а влом - это когда что-то хочется, но не видишь необходимости это делать.
rontommy вне форума  
Старый 16.04.2004, 19:27     # 17
Shkurik
Junior Member
 
Аватар для Shkurik
 
Регистрация: 24.01.2002
Адрес: Украина, Киев
Пол: Male
Сообщения: 158

Shkurik Путь к славе только начался
всем привет!

нда, такого обсуждалова я не ожидал....
может я не правильно понимаю -- я зарегистрил расширение .pl в винде, дальше
тэорэтычно запуская скрипт и через пробел имя файла - скрипт должен его обрабатывать?
.....


немного спустя:

опосля того как прописал как в картинке - все работает! век живи - век учись. Премного благодарен!!!!!
Всем!!!

тока дальше появляется вопрос (читаю документаху - на английском, может из-за етого трудности, ну и не программер я, это попытки решить маленькие локальные задачи) ... -а впрочем для начала нада маленько подчитать.

ЗЫ если это для Вас актуально - я проголосоваль!
для Rontommy - printf($filename) и print($filename) работают одинаково (в этом случае), поскольку не определено форматирование вывода.... кажется так?
Спасибо!
__________________
Банзай!

Последний раз редактировалось Shkurik; 16.04.2004 в 19:47.
Shkurik вне форума  
Старый 21.05.2004, 17:17     # 18
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
rontommy
Цитата:
в твоем варианте больше 10 параметров не передашь
Правильно. Но есть способ передачи любого количества параметров. Искал я его не долго, просто потребовалось это только сегодня, поэтому и верулся к этой теме только сейчас. Может кому понадобится: нужно прописать не
perl "%1" "%2" "%3" "%4" "%5"
(см. рисунок из предыдущего поста), а
perl "%0" %*
.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:49.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.