s/frog/toad/g txtfile
won't work inside a perl script. It works from the command line because "txtfile" is actually be handed to the mini-script created by using 'perl -i.bak -pe 's/frog/toad/g'.
Use 'perl --help' to see what -i -p and -e mean. This sounds a lot like a homework assignment, but here is one solution:
#!/usr/bin/perl -w
use strict;
# this script will edit itself
ReplaceStuff($0,'word','taco');
sub ReplaceStuff{
my ($file,$origword,$newword) = @_;
local $^I=""; # set the backup tag to nothing
local @ARGV = $file; # make a local @ARGV so we can use <>
# go through each line and do the substitution
while (<>) {
s/$origword/$newword/g;
print; # print stuff out
}
}