The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Запись кода в файл"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Запись кода в файл"  
Сообщение от Валентин email(??) on 21-Мрт-06, 17:32 
есть прога, которая генерит перл-скрипт, исходя из вводимых параметров.
спрашивает параметры, записывает их в файл. дальше нужно в этот же файл дописать листинг скрипта:

open (NEWFILE,">$filename");
    print NEWFILE '#!/usr/bin/perl'."\n";
    print NEWFILE '# config'."\n";
    print NEWFILE '$hostname="'.$hostname."\";\n";
    ...  
    print NEWFILE '$filename="'.$filename."\"\n";

    print NEWFILE <<LABEL;
          $t = new Net::Telnet;
          $t->open($hostname);
          ...
          LABEL
    close (NEWFILE);

что получается в сгенерированом файле:
#!/usr/bin/perl
# config
$hostname="XXXX";
$filename="YYYY"
" = new Net::Telnet;
->open(cisco);
#
я так понимаю, что печать в файл идет, прорабатывая все переменные после LABEL. если $t не отпределено - не пишется.
можно обойти это конструкцией типа:
print "line 1 of script";
print "line 2 of script";
...
print "line n of script";
но строк много, да и при изменении кода хочется просто скопировать его в нужное место, а не искать и править нужные строки.
как записать листинг, не описывая КАЖДУЮ строку принтом ?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Запись кода в файл"  
Сообщение от gr (??) on 21-Мрт-06, 19:17 
>есть прога, которая генерит перл-скрипт, исходя из вводимых параметров.
>спрашивает параметры, записывает их в файл. дальше нужно в этот же файл
>дописать листинг скрипта:
>
>open (NEWFILE,">$filename");
>    print NEWFILE '#!/usr/bin/perl'."\n";
>    print NEWFILE '# config'."\n";
>    print NEWFILE '$hostname="'.$hostname."\";\n";
>    ...
>    print NEWFILE '$filename="'.$filename."\"\n";
>
>    print NEWFILE <<LABEL;
>          $t =
>new Net::Telnet;
>          $t->open($hostname);
>          ...
>          LABEL
>    close (NEWFILE);
>
>что получается в сгенерированом файле:
>#!/usr/bin/perl
># config
>$hostname="XXXX";
>$filename="YYYY"
>" = new Net::Telnet;
>->open(cisco);
>#
>я так понимаю, что печать в файл идет, прорабатывая все переменные после
>LABEL. если $t не отпределено - не пишется.
>можно обойти это конструкцией типа:
>print "line 1 of script";
>print "line 2 of script";
>...
>print "line n of script";
>но строк много, да и при изменении кода хочется просто скопировать его
>в нужное место, а не искать и править нужные строки.
>как записать листинг, не описывая КАЖДУЮ строку принтом ?

вот так попробуй (только заэкранируй все $hostname и проч.):

print NEWFILE <<"LABEL";
          $t = new Net::Telnet;
          $t->open($hostname);
          ...
LABEL

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Запись кода в файл"  
Сообщение от Валентин email(??) on 22-Мрт-06, 09:48 
>вот так попробуй (только заэкранируй все $hostname и проч.):
>print NEWFILE <<"LABEL";
>          $t =
>new Net::Telnet;
>          $t->open($hostname);
>          ...
>LABEL

дело в том что экранировать нежелательно.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Запись кода в файл"  
Сообщение от chip email(ok) on 22-Мрт-06, 13:59 
>>вот так попробуй (только заэкранируй все $hostname и проч.):
>>print NEWFILE <<"LABEL";
>>          $t =
>>new Net::Telnet;
>>          $t->open($hostname);
>>          ...
>>LABEL
>
>дело в том что экранировать нежелательно.

Блин, ну проявите фонтазию:

print NEWFILE <<'LABEL';
          $t = new Net::Telnet;
          $t->open($hostname);
          ...
LABEL

perldoc -fq
perldoc -fqq

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Запись кода в файл"  
Сообщение от Валентин email(??) on 22-Мрт-06, 14:07 
>Блин, ну проявите фонтазию:
>
>print NEWFILE <<'LABEL';
>          $t =
>new Net::Telnet;
>          $t->open($hostname);
>          ...
>LABEL
>
>perldoc -fq
>perldoc -fqq

"фонтазию" проявил :)
спасибо, наконецто дошло. просто я думал что надо будет экранировать все строки.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру