On 12/19/05, Tony Heal <[EMAIL PROTECTED]> wrote: > I have a database name I want to replace inside of an xml file. I can do > this in several step using sed, but I would like to do it in a single step > using perl. This is what I have in sed and what does not work in perl. [...] > PERL (single line in bash script) > > #!/bin/bash > echo -n "Please enter the name of the new database: " > read syelledb > > dbchange=`cat /tmp/data-sources.xml|grep database|cut -d ">" -f2|cut -d "<" > -f1` > /usr/bin/perl -pi -w -e 's/$dbchange/$syelledb/' > > I am not using all perl as I can only do a very limited amount in that. > (just started learning)
You aren't passing a file (or input stream) to perl, so it has no input on which to run. If you want to edit $file inplace, you could write /usr/bin/perl -pi.bak -w -e 's/$dbchange/$syelledb/' $file Note the option "-i.bak". This will create a backup of $file as $file.bak, which is very useful if your script does something wrong. In general, if something works in bash, sed, awk, or C, there's a good chance it'll work in perl in essentially the same way. You might have to add a few more "$"s, especially when defining variables. -- Michael A. Marsh http://www.umiacs.umd.edu/~mmarsh http://mamarsh.blogspot.com