electroman00 has asked for the wisdom of the Perl Monks concerning the following question:

Hi all..... Trying to write a perl script that will write a perl script. ===== Here's my test prog test.pl #!/usr/bin/perl # External Modules #use strict; #use warnings; use Cwd; system "clear"; $cwdir = cwd; $APPNAME="AnyName"; # << "AnyName" must substitute in prog_file below. #require "$cwdir/prog_file"; open(PROGFILE, "<$cwdir/prog_file"); # open for input #my(@lines) = <PROGFILE>; # read file into list @lines = <PROGFILE>; # read file into list #my($line); foreach $line (@lines) # loop thru list { print "$line"; } close(PROGFILE); ===== Here's the file prog_file #!/usr/bin/perl # Sample Program \$APPNAME="AnyName"; print "This is the var \$APPNAME and this is what needs to get substituted $APPNAME\n"; The output needs to be the prog_file with only the second $APPNAME in the print line substituted by the var in the test.pl So the output looks like this.... #!/usr/bin/perl # Sample Program print "This is the var $APPNAME and this is what needs to get substituted AnyName\n"; It somewhat works but not exactly, seems to be a catch 22 built in here. Might add I'm running out of brain cells due to this problemo. Thanks for any and all help in advance...

Replies are listed 'Best First'.
Re: url file download code
by marto (Cardinal) on Dec 22, 2006 at 11:51 UTC
      Martin Thanks much....looks like what I'm after. Sorry I didn't respond as fast as you did...
        Don't worry about response time :) Just glad to be of help. If you have not already done so check out the PerlMonks FAQ, it is full of useful information regards using the Monastery.

        Cheers,

        Martin
Re: url file download code
by lovekumar (Initiate) on Dec 22, 2006 at 12:45 UTC
    try this:-
    require LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->timeout(10); $ua->env_proxy; my $response = $ua->get(’http://search.cpan.org/’); if ($response->is_success) { print $response->content; # or whatever } else { die $response->status_line; }
      Thanks again guys... got that part working.
      Now I have a faulty operater problem (me)....
      sub calc_disk { my $md5_disk = undef; open(FILE, "/tmp/dl_mods/$filename") or die "md5sum cannot fin +d /tmp/dl_mods/$filename !!"; binmode(FILE); $md5_disk = Digest::MD5->new->addfile(*FILE)->hexdigest,"\n"; if ($@) { $errormessage = $@; $response_code = 0; return $response_code; } return ($md5_disk); }
      What I get is this
      Useless use of a constant in void context at dlfiles_sub.pl
      line 98.
      Digest::MD5->new->addfile(*FILE)->hexdigest,"\n";
      Other than stripping that line out nothing fixes it
      Well nothing between my ear's anyway.
        Well there was a lot of trees but no forest.
        $md5_disk = undef; open(FILE, "/tmp/dl_mods/$filename") or die "md5sum cannot fin +d /tmp/dl_mods/$filename !!"; binmode(FILE); $md5_disk = Digest::MD5->new->addfile(*FILE)->hexdigest; close(FILE);
      --lovekumar,

      It doesn't take much effort to cut-and-paste code from another site, and it's considered bad form (at best) NOT to attribute your sources.  If you're going to take code from an alternate source, you should state that up front.

      What you posted won't even compile in Perl.  That's because the string ’http://search.cpan.org/’ contains non-standard single quotes (ascii 146) which are often used in documentation, rather than the standard apostrophes "'" (ascii 39).

      So my guess is that you got it from some site other than CPAN's version, which uses the apostrophes for that line, but is identical otherwise:

      require LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->timeout(10); $ua->env_proxy; my $response = $ua->get('http://search.cpan.org/'); if ($response->is_success) { print $response->content; # or whatever } else { die $response->status_line; }

      Update:  Okay, I admit I have to agree, mostly, with virtualsue's response below.  I did go overboard with my response, which comes across as a bit harsh/rigid.  Sorry about that.


      s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/
        I think people should be allowed to cut & paste from pod without being hassled about it. A /msg to point out the problem with the single quote character would have been kind.