Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: Perl system() or exec()


  • Subject: Re: lug-bg: Perl system() or exec()
  • From: Peter Pentchev <roam@xxxxxxxxxxx>
  • Date: Mon, 7 Mar 2005 11:17:20 +0200

On Mon, Mar 07, 2005 at 11:10:12AM +0200, Sava Chankov wrote:
> Daniel wrote:
> >Пиша си аз и стигам до частта, където трябва да риплейсна един стринг в 
> >текстов файл и то със стандартни инструменти. Написах го с временен файл 
> >и базирано на sed. Идеята е някаква такава -
> >mv file file.tmp;
> >sed s/^$something.*$/$somethingandsomethingelse/ file.tmp > file
> >rm file.tmp
> >
> >Това работи, пишейки го на ръка, но слагайки го в system() пищи. Лудото 
> >е,чe $somethingelse съдържа стринг от сорта на "1","2","3" (кавичките са 
> >важни), което избягвам затваряйки го в единични кавични в шел, но както 
> >споменах - не ще! Пише, че не е терминиран с// оператора. Което е 
> >логично, но дори слагайки "командата" във временна променлива и 
> >пействайки я в шел-а след парс-а на "перлата" тя РАБОТИ. Имам | - ки в 
> >командата, но ги ескейпвам с \\.
> >Дееба. вече ми се спи. Ако се сещате за по-инте(ресен|лигентен) начин за 
> >замяна на даден ред от текстов файл - отворен съм. Сед ми се струва бърз 
> >и затова се оповах на него. sed2perl не ме кефи.
> 
> За тази работа няма нужда да напускаш командния ред:
> 
> perl -pi -e 's/^$something.*$/$somethingandsomethingelse/' file
> 
> -p              assume 'while (<>) { ... }' loop around program but print 
> line
>                 also, like sed
> -i[extension]   edit <> files in place (makes backup if extension supplied)
> -e program      one line of program (several -e's allowed, omit programfile)

Доколкото разбирам обаче, той се опитва да го направи като част от друга
програма, и $something и something else са променливи, които получават
сотйности от други парчета на програмата.  Опит за извикване на perl -pi
през system() или exec() ще се сблъска със същите проблеми като опита за
извикване на sed; решението е да се направи всичко вътре в самата
програма :)

Поздрави,
Петър

-- 
Peter Pentchev	roam@xxxxxxxxxxx    roam@xxxxxxxx    roam@xxxxxxxxxxx
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
I've heard that this sentence is a rumor.

Attachment: pgpubmAgnLqMg.pgp
Description: PGP signature



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.