Страница 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:
...
спасибо, такой вариант конкатенации проверю завтра
а в теле скрипта стараюсь не иметь компонентов, которые могут поменяться со временем...
там на самом деле еще пара страниц внутри цикла, и случись необходимость изменить входные и выходные файлы (а случается такое бывает пару раз на дню, а то и чаще) - и лазь ищи, и обязательно что-нибудь пропустишь

Добавлено: 13 дек 2005, 19:27
ir
Yury - если менять чего надо - для этого поиск есть
Я еще использую Perl builder - он почти все ошибки ловит и "несоответствия" - если тебе надо - я вышлю, он маленький.
Добавлено: 14 дек 2005, 09:11
Yury
ir писал(а):Yury - если менять чего надо - для этого поиск есть
я даже больше скажу - есть еще поиск с заменой
но! поиск - вещь, конечно хорошая, проблема в том, чтобы не забыть что менять
поэтому определяю все потенциально переменчивое в начале скрипта - и не надо нам никакого поиска
ir писал(а):Я еще использую Perl builder - он почти все ошибки ловит и "несоответствия" - если тебе надо - я вышлю, он маленький.
буду признателен
зы. конкатенация работает, спасибо