in reply to Re: help on this code below
in thread help on this code below

chop $SAVE_DIRECTORY if ($SAVE_DIRECTORY =~ /\/$/); use CGI qw(:standard); $query = new CGI; $puser = $query->param("pusr");
in the above code $SAVE_DIRECTORY is /usr/tmp and i am trying to create a file with the value of puser in /usr/tmp. it has become a hell and i am not able to understand y i am not able to create the file with $puser value. the /usr/tmp dir has write permission to all.

Replies are listed 'Best First'.
Re^3: help on this code below
by aaron_baugher (Curate) on Oct 28, 2011 at 12:04 UTC

    Your code doesn't try to open a file, so it's hard to guess. What does "not able to create the file" mean? Does the file not show up, or does it show up somewhere else? Is there an error? Have you checked the web server's error_log? Have you tried having your script send errors to the browser, as CGI.pm is able to do?

    Most likely, $puser still isn't getting the value you think it is, because of the problem I outlined in a message above. Add a line like the following to see the value of $puser in your browser. What is displayed between the equal signs? While you're at it, you might want to do the same thing with $SAVE_DIRECTORY; maybe it doesn't really contain /usr/tmp.

    print "\$puser =$puser=";
      i am able to print the value of $puser in the browser but i am not able to save any file with the value of $puser means lets say after doing $puser = $query->param("pusr"); if $puser value is "JANKPA" then if i use print $puser the browser is able to display the value as JANKPA, but when i do  rename("SOMEFILE.txt",$puser"); the file is not getting renamed to JANKPA

        It might help if you stop moving the goalposts. First you're having trouble opening a file, now you're trying to rename one. One problem at a time. We still haven't seen the code that opens the file, but make sure it checks for errors, something like this

        my $puserfile = "$SAVE_DIRECTORY/$puser"; open my $puserfn, '>', $puserfile or die "Cannot open $puserfile for w +riting: $!";

        That will try to open the file, and on failure report the filename and the reason to the error log. If you don't have easy access to the error log, change 'die' to 'print' to at least see it in your browser, or look at CGI.pm's ability to report all errors to the browser.

        Debugging isn't that complicated, but you have to think through what's happening. Like I said before, check what errors are being generated, and make sure your code checks for them. If your code is supposed to create a file and it's not happening, error-check that part of the code. Don't just try something different. Make sure the filename it's trying to open is okay -- the full filename; don't assume any part of it is what you think it is. If it's a relative pathname, check the cwd at that point to make sure that's correct too. Check everything, and use error checking. Let Perl tell you what the problem is.

        Do you at least check for the return value of rename? Have you studied its documentation?