Страница 1 из 1

Вопрос по Perl

Добавлено: 13 дек 2005, 10:49
Yury
Господа, с таким Perl'ом помогите разобраться:

как сделать цикл, чтобы в приведенном фрагменте выделенные части команд менялись с приращением 50?
RunMenu("FILES_PLTEDT_LOAD:V:\\xeit\\prc_cu_au_sn638650.dhq","interactive",
sub { PanelResults("pltedt_LoadPlotFile",
"ignore_heirachy" => "1",
"all_in_one" => "0",
"reduce_height" => "0",
"move_pen" => "0",
"new_origin" => "0",
"button_pressed" => "ok",
"load_colour_table" => "1",
"coalesce_text" => "0",
"layer" => "8650E",
"suppress_warnings" => "0",
"plot_file" => "V:\\xeit\\prc_cu_au_sn638650.dhq",
"old_origin" => "1"
); },
"FINISH");
с перлом никогда не сталкивался :(

Re: Вопрос по Perl

Добавлено: 13 дек 2005, 11:23
Earl Grey
Yury писал(а):Господа, с таким Perl'ом помогите разобраться:

как сделать цикл, чтобы в приведенном фрагменте выделенные части команд менялись с приращением 50?
RunMenu("FILES_PLTEDT_LOAD:V:\\xeit\\prc_cu_au_sn638650.dhq","interactive",
sub { PanelResults("pltedt_LoadPlotFile",
"ignore_heirachy" => "1",
"all_in_one" => "0",
"reduce_height" => "0",
"move_pen" => "0",
"new_origin" => "0",
"button_pressed" => "ok",
"load_colour_table" => "1",
"coalesce_text" => "0",
"layer" => "8650E",
"suppress_warnings" => "0",
"plot_file" => "V:\\xeit\\prc_cu_au_sn638650.dhq",
"old_origin" => "1"
); },
"FINISH");
с перлом никогда не сталкивался :(
Попробуй использовать дополнительную переменную, например, layerId. Наращивай ее в цикле и используй так:

"layer" =>$layerID + "E"
"plot_file" => "V:\\xeit\\prc_cu_au_sn63" + $layerID +".dhq"

Re: Вопрос по Perl

Добавлено: 13 дек 2005, 14:41
Yury
Уникурсал Уникурсалыч писал(а): Попробуй использовать дополнительную переменную, например, layerId. Наращивай ее в цикле и используй так:

"layer" =>$layerID + "E"
"plot_file" => "V:\\xeit\\prc_cu_au_sn63" + $layerID +".dhq"
спасибо

про переменную-то понятно, непонятно было как ее в команду засунуть - твой вариант не пошел

в итоге вот что удалось нарисовать, вроде работает:
$sect = 8550;
while ($sect<=9150)

{

$st1 = sprintf("FILES_PLTEDT_LOAD:V:\\xeit\\prc_cu_au_sn63%d.dhq",$sect);
$st2 = sprintf("E%d",$sect);
$st3 = sprintf("V:\\xeit\\prc_cu_au_sn63%d.dhq",$sect);

RunMenu($st1,"interactive",
sub { PanelResults("pltedt_LoadPlotFile",
"ignore_heirachy" => "1",
"all_in_one" => "0",
"reduce_height" => "0",
"move_pen" => "0",
"new_origin" => "0",
"button_pressed" => "ok",
"load_colour_table" => "1",
"coalesce_text" => "0",
"layer" => $st2,
"suppress_warnings" => "0",
"plot_file" => $st3,
"old_origin" => "1"
); },
"FINISH");

$sect = $sect+50;

}

Добавлено: 13 дек 2005, 17:11
ir
Eshe proshe:

$s=8550;
while ($s<=9150) {


RunMenu("FILES_PLTEDT_LOAD:V:\\xeit\\prc_cu_au_sn63$s.dhq","interactive",
sub { PanelResults("pltedt_LoadPlotFile",
"ignore_heirachy" => "1",
"all_in_one" => "0",
"reduce_height" => "0",
"move_pen" => "0",
"new_origin" => "0",
"button_pressed" => "ok",
"load_colour_table" => "1",
"coalesce_text" => "0",
"layer" => "$sE",
"suppress_warnings" => "0",
"plot_file" => "V:\\xeit\\prc_cu_au_sn63$s.dhq",
"old_origin" => "1"
); },
"FINISH");
$s=$s+50;}

Добавлено: 13 дек 2005, 18:45
Yury
ir писал(а):Eshe proshe:
...
спасибо, такой вариант конкатенации проверю завтра

а в теле скрипта стараюсь не иметь компонентов, которые могут поменяться со временем...
там на самом деле еще пара страниц внутри цикла, и случись необходимость изменить входные и выходные файлы (а случается такое бывает пару раз на дню, а то и чаще) - и лазь ищи, и обязательно что-нибудь пропустишь :wink:

Добавлено: 13 дек 2005, 19:27
ir
Yury - если менять чего надо - для этого поиск есть :wink:
Я еще использую Perl builder - он почти все ошибки ловит и "несоответствия" - если тебе надо - я вышлю, он маленький.

Добавлено: 14 дек 2005, 09:11
Yury
ir писал(а):Yury - если менять чего надо - для этого поиск есть :wink:
я даже больше скажу - есть еще поиск с заменой :lol:

но! поиск - вещь, конечно хорошая, проблема в том, чтобы не забыть что менять :wink:
поэтому определяю все потенциально переменчивое в начале скрипта - и не надо нам никакого поиска :)
ir писал(а):Я еще использую Perl builder - он почти все ошибки ловит и "несоответствия" - если тебе надо - я вышлю, он маленький.
буду признателен

зы. конкатенация работает, спасибо