Eric Preece wrote: > Hello, > > I am new to perl and having trouble with a script I wrote to publish some data in an >rss format. The script works great from the command prompt but dies when I use input >from a web form. The error is "No such file or directory" for my template. The file >is there and I have no trouble with this from the command prompt. The directory the >script resides in has write permissions on for anon web users. > > Here is the script - I made a notation where I am getting the error. And since I am >a newbie any general perl/coding tips you all have I would be grateful to hear. >Thanks in advance for your help! > > ######################### > # includes > ######################### > use strict; > use warnings; > use CGI qw(:standard); > use XML::RSS; > > ######################### > # vars > ######################### > my $dateStamp; > # my $title = "Title here"; # test value - uncomment to use > # my $desc = "Desc here"; # test value - uncomment to use > # my $full = "Full test here"; # test value - uncomment to use > # my $newName = "5142002222232rss.asp"; #test value - uncomment to use > > ######################### > # make a date stamp > ######################### > (my $sec, my $min, my $hour, my $mday, my $mon, my $year) = localtime(); > $mon += 1; #this will change the month from a 0-11 format to a useable >1-12 format > $year += 1900; # year is number since 1900 - so we add 1900 to get >the full year. > $dateStamp = "$mon$mday$year$hour$min$sec"; # datestamp to identify the >entry > > &getInput ($dateStamp); # call the sub to get the rss input > undef &getInput; > > &writeRss ($newName); # call sub to write the rss file > undef &writeRss; > > undef &main; > > ######################### > # sub to get rss input from htm form and write it to a file > ######################### > sub getInput { > my $title = param('title'); > my $desc = param('desc'); > my $full = param('full'); > my $template = "rss_outtemplate.htm"; > my $tempHTML =''; > my $fullOutfile = "rss.asp"; > my $fileTag = shift; > my $newName; > > ######################### > # format the form data using a template > ######################### > open(FILEFULL, $template) or die ("Couldn't open template file - $template - >$!\n"); # <-- script dies right here, but only from web form. > while (<FILEFULL>) { > $tempHTML =~s /xTitle/$title/g; > $tempHTML =~s /xDesc/$desc/g; > $tempHTML =~s /xfull/$full/g; > $tempHTML .= $_; > } > close FILEFULL or die ("Couldn't close $template - $!\n"); > > ######################### > # write the form data with template to the dump file > ######################### > open(FILESTOR,"> $fullOutfile") or die ("Couldn't open $fullOutfile - $!\n"); > print FILESTOR $tempHTML; > close FILESTOR or die ("Couldn't close $fullOutfile - $!\n"); > > ######################### > # rename the dump file with datestamp > ######################### > $newName = $fileTag. "rss.asp"; > rename $fullOutfile, $newName or die ("Couldn't rename rss out file - >$fullOutfile - $!\n"); > return $newName; > } > > ######################### > # sub to write the rss file > ######################### > sub writeRss ($newName) { > my $rss = new XML::RSS (version => '1.0'); > my $rss_output = "rss.xml"; > my $rss_link= shift; > > $rss->parsefile($rss_output); > pop(@{$rss->{'items'}}) if (@{$rss->{'items'}} == 15); > $rss->add_item(title => $title, > link => "path/to/my/site/here/$rss_link", > description => $desc, > mode => 'insert' > ); > $rss->save($rss_output); > > } >
Is the template in the same directory as your script? It seems that your code assumes that. Try using an absolute path, instead. open(FILEFULL, "</path/to/$template") You don't have to have the "<" in front of the path, I just am used to putting it. It means only open for reading. Gautam. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]