10. oktober 2002 - 15:43Der er
6 kommentarer og 1 løsning
STDIN og STDOUT
Jeg har følgende script :
: # *-*-perl-*-* eval 'exec perl -w -S $0 ${1+"$@"}' if 0; # if running under some shell
die "Usage: $0 infilename outfilename\n" if $#ARGV < 1;
($infilename, $outfilename) = @ARGV;
open(INFILE, "<$infilename"); # open for reading open(OUTFILE, ">$outfilename"); # open for writing
# read one line at a time: while (defined($line=<INFILE>)) { ($x, $y) = split(' ', $line); # extract x and y value $fy = myfunc($y); # transform y value printf(OUTFILE "%g %12.5e\n", $x, $fy); } close(INFILE); close(OUTFILE);
sub myfunc { my ($y) = @_; if ($y >= 0.0) { return $y**5.0*exp(-$y); } else { return 0.0; } }
Hvordan ændrer jeg scriptet, så det benytter STDIN og STDOUT istedet for eksplesit at lese/skrive til filen?
Jeg har forstået det sådan, at det (ideelt set), kun skulle behøves at ændre i liniene :
open(INFILE, "<$infilename"); # open for reading open(OUTFILE, ">$outfilename"); # open for writing
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.