in reply to Re^2: How to convert an @ARGV to form based input?
in thread How to convert an @ARGV to form based input?

That's obviously because in for my $domain(...) loop you defined $domain but when you replaced this line with if($domain ne "") this variable was not defined anymore. Put my $domain; before if and it will work.

Replies are listed 'Best First'.
Re^4: How to convert an @ARGV to form based input?
by taint (Chaplain) on Aug 21, 2012 at 07:52 UTC
    Greetings @grizzley, and thank you for your reply. Sadly, following your advice DOES define $domain, but doing so only nullifies the if loop. So the form fields never show up. FWIW, the perl output in the web log reveals:
    Use of uninitialized value $domain in string ne at dnsdig.cgi line 9. Use of uninitialized value $domain in concatenation (.) or string at d +nsdig.cgi line 18. Can't call method "answer" on an undefined value at dnsdig.cgi line 19 +.

    If I understood you correctly, the code I used was:
    #!/usr/bin/perl -w use strict; use Net::DNS; my $dns = new Net::DNS::Resolver; my $domain; if($domain ne "") { print "<form action=\"dnsdig.cgi\" method=\"post\"> <input name=\"domain\" type=\"text\" value=\"\" /> <input type=\"submit\" value=\"Get MX\" /> </form>"; } else { my $mx = $dns->query( $domain, 'MX' ); print "content-type:text/html; charset=utf-8\n\n"; print "$domain:\n\n"; foreach my $rr ($mx->answer) { print "<br />", $rr->exchange, ' [<b>', $rr->preference, "</b> +]\n"; } }

    Thanks again for taking the time to respond.
    --Chris
    #!/usr/bin/perl -Tw
    use perl::always;
    my $perl_version = "5.12.4";
    print $perl_version;

      Ok, now the error message looks differently, don't you agree? :)

      $domain is already defined, but uninitialized. Please replace my $domain; with my $domain = 'google.com'; and check the result.
        Yes, I agree. :)
        Just tried this:
        #!/usr/bin/perl -w use strict; use Net::DNS; my $dns = new Net::DNS::Resolver; my $domain; if($domain ne "") { my $mx = $dns->query( $domain, 'MX' ); print "content-type:text/html; charset=utf-8\n\n"; print "$domain:\n\n"; foreach my $rr ($mx->answer) { print "<br />", $rr->exchange, ' [<b>', $rr->preference, "</b> +]\n"; } } else { print "content-type:text/html; charset=utf-8\n\n"; print "<form action=\"dnsdig.cgi\" method=\"post\"> <input name=\"domain\" type=\"text\" value=\"\" /> <input type=\"submit\" value=\"Get MX\" /> </form>"; }
        But again, fail:
        Use of uninitialized value $domain in string ne at dnsdig.cgi line 9. Use of uninitialized value $domain in string ne at dnsdig.cgi line 9., + referer: ...
        Now I'll use your newest recommendation (which I know will work), but doesn't provide the empty form field I'm looking for -- but I'll do it anyway. :)
        --Chris
        #!/usr/bin/perl -Tw
        use perl::always;
        my $perl_version = "5.12.4";
        print $perl_version;
      D'OH!
      That should have read:
      if($domain eq "") {
      not
      if($domain ne "") {
      Sorry.
      It still doesn't work.
      --Chris
      #!/usr/bin/perl -Tw
      use perl::always;
      my $perl_version = "5.12.4";
      print $perl_version;