/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Escaping quotes WIN32/UNIX
Fra : Henrik Wendt


Dato : 13-01-02 14:44

Hi

Jeg prøver at få mit UNIX perl program til at køre under windows og forsøger
i den forbindelse at kalde et externt progam fra perl på denne

måde:

execute ("program.exe -a='<?xml version="1.0"
encoding="ISO-8859-1"?><DOCTYPE rpc:methodCall
STEM"../config/PRpc.dtd"><rpc:methodCall>...</rpc:methodCall>' 2>&1 ");

sub execute {

my ($cmd) = @_;

open (FILE, $cmd) or die "Can't start $cmd $!\n";;

while (<FILE>) {

print $_;

}

}

Dette går fint under Solaris men på WIN32 (ActiveState) får jeg fejlen: <
var ikke ventet på dette tidspunkt.

Jeg har prøvet at escape -a argumentet på forskellig måde men uden held. det
er sandsynligvis commandprompten under win2000 der får galt fat i de
indlejrede ". Er der nogen der har en ide til dette?

Derudover skal programmer tage argumenter fra kommandolinien der expanderer
til filnavne med følgende syntax

foreach my $file (@ARGV) {}

det går igen fint på unix men ikke win32 jeg gætter på at der igen er
shellen der expanderer under unix, men ikke win32, hvordan skal dette omgås
på en portabel måde?

Hilsen

Henrik












 
 
Christian (13-01-2002)
Kommentar
Fra : Christian


Dato : 13-01-02 20:44

On Sun, 13 Jan 2002 14:43:32 +0100, "Henrik Wendt" <wendt@image.dk>
wrote:


>execute ("program.exe -a='<?xml version="1.0"
>encoding="ISO-8859-1"?><DOCTYPE rpc:methodCall>STEM"../config/PRpc.dtd"><rpc:methodCall>...</rpc:methodCall>' 2>&1 ");

<snip>

>Dette går fint under Solaris men på WIN32 (ActiveState) får jeg fejlen: <
>var ikke ventet på dette tidspunkt.

Prøv med:

my $line=qq(program.exe -a='<?xml version="1.0"
encoding="ISO-8859-1"?><DOCTYPE
rpc:methodCallSTEM"../config/PRpc.dtd"><rpc:methodCall>...</rpc:methodCall>'
2>&1);
execute ($line);

/Christian

Thorbjørn Ravn Ander~ (14-01-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 14-01-02 01:12

"Henrik Wendt" <wendt@image.dk> writes:

> Dette går fint under Solaris men på WIN32 (ActiveState) får jeg fejlen: <
> var ikke ventet på dette tidspunkt.

Under Windows har ' ingen betydning, og " opfører sig som '.

Dette er command/cmd's "skyld", og er svært at lave om. Har du
mulighed for at læse fra en pipe i stedet?
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408917
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste