2017-06-03 3 views
-2

bin versucht, diesen Code auszuführen, aber es gibt mir schon den folgenden Fehler:
Verwendung von nicht initialisierten Wert $ site in Zeichenfolge in C: \ Benutzer \ USER \ Desktop \ Skript. pl Linie 35.

#!/usr/bin/perl 

use LWP::UserAgent; 
use File::Slurp; 
use warnings; 
use strict; 
use HTTP::Request; 

open (THETARGET, "<list.txt") || die "[-] Can't open the file"; 
my @TARGETS = <THETARGET>; 
close THETARGET; 
my $link=$#TARGETS + 1; 

OUTER: foreach my $site(@TARGETS){ 
    chomp($site); 
} 

my $ua = LWP::UserAgent->new; 
$ua->timeout(10); 
my $url = my $site; 
my $picture = "teest.png"; 
my %args; 
my $field_name = "file[]"; 
my $buf ; 
my $buf_ref = $args{'buf'} || \$buf ; 


my $value = read_file($picture , binmode => ':raw' , scalar_ref => 1); 

my $response = $ua->post($url, 
      Content_Type => 'form-data', 
      Content => [ $field_name => ["$picture"] ] 
      ); 
print "$site"; 
+2

Der von Ihnen gepostete Code hat keine 35 Zeilen. Bitte geben Sie den Code an, der den Fehler tatsächlich geliefert hat. – ikegami

+1

'my $ site' erstellt einen neuen Skalar, der auf' undef' initialisiert wird. Sie weisen diesen Skalar $ url zu und setzen ihn auf undef. Sie verwenden dann $ URL, als ob es eine URL enthält, aber es nicht. – ikegami

+0

Sie deklarieren '$ site' mit der foreach. Die for-Schleife macht nur einen chomp von $ site und das ist es. '% args' ist deklariert, aber nicht verwenden,' $ buf' '$ buf_ref' usw. Sehr falsch mit diesem Code. –

Antwort

-1

ich denke, was Sie erwarten, der Wert von $ Seite ist von der for-Schleife zu übertragen, sondern weil es in die for-Schleife definiert ist, ist in ihrem Umfang begrenzt, dass Schleife. Vielleicht haben Sie beabsichtigt, dass der gesamte folgende Code auch in dieser Schleife enthalten ist. Andernfalls wird dieser Wert für $ site zwei Zeilen nach der Erstellung nicht mehr in der schließenden Klammer vorhanden sein. Ihre Linie

my $url = my $site; 

erstellt dann eine neue Variable $ site (die undef ist) und dass undef Wert verwendet wird $ url gesetzt, so dass es auch undefiniert ist. Ich vermute, Sie hatten zunächst

my $url = $site; 

dann die zusätzliche "meine" hinzugefügt, um einen früheren Fehler zu beheben.

Ich hoffe, das hilft Ihnen.

+0

Ihre Erklärung des Problems ist gut, aber Ihre vorgeschlagene Lösung funktioniert nicht. Hast Du es versucht? Und warum denkst du, dass die Schleife nur einmal iteriert? – melpomene

+0

Sie haben Recht, @melpomene ... Ich habe den ursprünglichen Code falsch gelesen und dachte, dass nur ein Wert für TARGET eingelesen wurde. Ich habe meine Antwort jetzt korrigiert – SGeorgiades

Verwandte Themen