Thomas Bøjstrup Johansen wrote:
>>>eks. på kommandoline:
>>> c:\perl\perl.exe c:\dir\script.pl < indputfil.txt > outputfil.txt
>
> kan man ikke "læse" hvad kommando line script er starte med også
finde > det på den måde ? det kan man da i andre sprog så vidt jeg husker
Well din kommando linie er:
c:\perl\perl.exe c:\dir\script.pl
< indputfil.txt > outputfil.txt betyder at det program der kører
c:\perl\perl.exe skal skifte STDIN og STDOUT ud med de to filer, det
betyder at det er cmd.exe der ved hvad filerne hedder ikke perl eller
dit perlscript.
Det du må gøre er at lave om på dit script så det får navnene på filerne
og så åbner dem selv.
> problemet er at det et kæmpe perl script som skal updaters fra tid til anden
Det har ikke noget at sige.
> og jeg vil helst ikke ændre på dets virke måde,
Det er jo det du er i gang med.
> men bare lave en lille ændrening
> i bund af script uden at ændre på andet.
Der skal ikke ændres i ret meget:
1) Start med at læse parametrene:
my $inputfn = $ARGV[0];
my $outputfn = $ARGV[1];
2) Åben filerne:
open INPUT, "<$inputfn" or die "screaming($inputfn): $!";
open OUTPUT, ">$outputfn" or die "screaming($outputfn): $!";
3) Ændr resten af scriptet til at bruge INPUT i stedet for STDIN, det
kan være lidt svært da STDIN er default for mange operationer, men når
du har search+replacet STDIN med INPUT så kig efter <> og lav det om til
<INPUT>, hold også øje med read().
4) Ændr resten af scriptet til at bruge OUTPUT i stedet for STDOUT, det
kan være lidt svært da STDOUT er default for mange operationer, men når
du har search+replacet STDOUT med OUTPUT så kig efter print ... og lav
det om til print STDERR ... (bmk: ingen komma efter STDERR).
5) luk filerne:
close INPUT;
close OUTPUT;
Når det så er gjort vil dit script virke som før med den nye kommandolinie:
c:\perl\perl.exe c:\dir\script.pl indputfil.txt outputfil.txt
Når du har fundet ud af hvorfor det alligevel ikke virkede kan du
begynde på at lave de ændringer du snakkede om før.
--
Regards Flemming Frandsen -
http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker