James Taylor wrote: > > I'm modifying a script someone wrote that basically reads a file file > into STDIN, and I was curious if there was anyway of modifying the > stdin value without having to first open the file, modify it, close the > file, and then open it into stdin. > > Basically, looks like: > > open(STDIN,$filename) || die "whatever\n"; > close(STDOUT); > > Well, I need to to a search/replace on STDIN, something like: > > open(STDIN,$filename) || die "blah\n"; > STDIN =~ s/one/two/g; > close(STDOUT); > > Line 2 isn't intended to work, it's just there to show you what i'm > trying to accomplish.
STDIN, STDOUT and STDERR are just file handles like any other file handles. The only difference is that the system opens them and connects them to a tty when the process starts. They don't have any "special" powers to edit a file in-place like you seem to think they do. The usual Perl idiom to do in-place editing is to use the -i command line switch or the $^I variable in a program. perl -i -pe's/one/two/g' filename Or: #!/usr/bin/perl { local ( $^I, @ARGV ) = ( '', 'filename' ); s/one/two/g while <>; } __END__ John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>