"Peter Makholm" <peter@makholm.net> skrev i en meddelelse
news:87myxkoo42.fsf@hacking.dk...
> "fix" <fix@faxe.dk> writes:
>
>> #!/usr/bin/perl
>> @proglist = ("echo", ">","tempfil") ; ##/ har også prøvet med "\>"
>> system(@proglist);
>>
>> men det virker således at begge parametrene echoes til console, og ikke
>> som
>> pipe til filen. kan operatorer bare ikke være parametre? - eller hvad
>> har
>> jeg ikke forstået?
>
> Når du i en shell kalder kommandoen 'echo foo > /tmp/somefile', så er
> det shellen der ser '> /tmp/somefile' og gør så uddata bliver skrevet
> til filen. Derefter bliver echo kaldt med det som shellen ikke vil
> kendes ved.
>
> I ovenstående perl-snippet bliver funktionen system kaldt med mere end
> et argument, derfor starter perl programmet angivet i første argument
> direkte uden at parse argumenterne i stil med en shell.
>
> Hvis du vil have system() til at parse argumenterne ligesom en shel,
> må du kun bruge et argument (fra pers synspunkt). Altså
>
> system("echo > /tmp/somefile");
Tak!
næsten logik! når man altså forstår det
> Det er fuldt ud dokumenteret i perls dokumentattion af
> system-funktionen. Læs den med 'perldoc -f system'.
ja. - men det skal også "interpreteres" korrekt :>)
men tusind tak for hurtig og forståelig hjælp!