[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: Re: [PROGRAMMERING] (#!)^2 problem



Peter Makholm wrote:
>> Jeg forsøger at bruge et (perl) script som interpreter
>> for et andet script, hvilket giver mig ged.
> Jeg er ikke helt sikker på at jeg forstår præcis hvad du mener.

Lad mig forklare hvad jeg vil, og derefter hvad mit problem er.

Plotprogrammet xmgrace kan kontrolleres med et simpelt
batch sprog noget i retning af gnuplot f.eks. følgende:

read "datafil"
s_ symbol 1
s_ symbol color 2
title "Mit plot"
redraw

(s_ er det nuværende dataset)

Praktisk, men jeg vil gerne kunne programmere batch filer,
f.eks. loope over et array af filer, og læse hver og
bestemme symbolerne for filerne osv. osv.

Nuvel, jeg kan lave et perl program, der gør det, og
som udskriver en batchfil som resultat, og så kører denne
batchfil med xmgrace, men jeg forsøger at kombinere alle
disse arbejdsskridt i et.

Følgende er et eksempel på en kombination af xmgrace
batchkode og så perl.

my @f=qw(epc2500/safari/tube/n_da2i.xydydy
         epc2500/safari/tube/n_dci2.xydydy 
         epc1000/safari/tube/n_da2i.xydydy
         epc1000/safari/tube/n_dci2.xydydy );

foreach (@f)
{
#   read "$_"
#s_ symbol 1
#s_ symbol color 2
#s_ errorbar color "red"   
}
#title "Mit plot"
#redraw

Det er perl code, hvor # står for xmgrace batch kommandoer.
Jeg har et perl script, der læser sådan en fil, og erstatter
#... med print "...", osv. så resultatet er et valid perl program.

Jeg opretter så en named pipe, forker, i child processen starter
jeg xmgrace, der lytter på den named pipe, og i parent kører jeg
eval(ovenstående program), og resultatet er at xmgrace generere
det plot jeg ønsker.

Resultatet er at jeg kan enten skrive en xmgrace batch fil (med #
i hver linie) et fuldt perlscript, eller vilkårlig blanding af dem 
som ovenstående. På den måde har jeg perls fulde kompleksitet
kombineret med det simple batchsprog, og implementere alt hvad
jeg vil, næsten.

Jeg har allerede klaret ovenstående, og der virker fint, men
kun hvis jeg kalder det som perlxmgraceparser kodefil.

Men jeg ville hellere skrive følgende, som et perl+xmgrace script:

#!/../perlxmgraceparser

:
ovenstående koden her
:

Og det er her mit problem er, i mit simple test eksempel jeg
sendte tidligere er det shell der parser koden, ikke mit perl script.


> plugh% chmod a+x ./test.plaf
> plugh% ./test.plaf
> foo bar baz
> ./test.plaf
> plugh%

Identisk kode: (modulo sti)

%> ./test.plaf
pling: Command not found.
plang: Command not found.
plong: Command not found.

Dvs. shell forsøger at fortolke filen.


> eller som jeg får:
> 1 2 3
> test.sk

Enig. Jeg viste ikke at den ville 'Arg12..' Arg2...

Hvad jeg får er derimod:

%> test.sk
/bin/tcsh

når jeg kører:
#!/home/zqex/analysis/proc/mdi/pxmg.pl 1 2 3

echo $SHELL
#Testing 1 2 3

Kører jeg det med bash/sh/tcsh får jeg ovenstående. Kører
jeg derimod scriptet med ash får jeg, derimod noget i retning
af det forventede:

Ash:

$ test.plaf
foo
bar
baz
./test.plaf


$ test.sk
1

2

3

./test.sk

Versioner Distribution Suse 9.0 med:
ash-0.2-798
tcsh-6.12.00-285
bash-2.05b-207
perl-5.8.1-81

-- 
  Mvh. Carsten Svaneborg
http://www.softwarepatenter.dk


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 22:43 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *