Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11316[/thread]

perl prog funzt nur noch unter linux



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Gast Gast
 2008-02-17 10:14
#105994 #105994
guten tag,

ich hab 2 kleinere tools geschriebn. das einte noch auf dem windows wo es auch immer perfekt funktioniert. ich hab danach die datein auf's linux rübergenommen und bearbeitet. dort hats auch immer perfekt funktioniert. doch als ich die sache nochmals auf meinem windows ausprobiert hab, hat er die txt-datei, welche er erstellen sollte, nicht mehr erstellt (es gab keine fehlermeldung, der text im terminal wurde ausgegeben).

hab dann das tool weitergegebn zum testen ob das an meinem windows oder so liegt, doch auch bei der neuen testperson gings nicht, das zweite tool hab ich ganz auf ubuntu geschrieben und funzt auch nicht auf windows.


kann mir jemand sagen weshalb das so ist und was ich verändern muss? find das total seltsam..

ah ja und noch so zur information, bei windows hab ich einfach den standard editor genommen wie bei linux (ubuntu) auch.
MisterL
 2008-02-17 10:57
#105995 #105995
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Also wenn es nicht am Editor hängt, vielleicht am Zeichensatz ? Denke an "dos2unix" oder "unix2dos"... Und wie so oft könnte ein Blick in den Quellcode der Problemkenntnis dienen ;-)
“Perl is the only language that looks the same before and after RSA encryption.”
Gast Gast
 2008-02-17 13:00
#105997 #105997
ich hab herausgefunden das dieser teil des codes, welcher bei beiden tools vorkommt, auf windows nicht richtig funktioniert.
weiss jemand warum und wie ich das richtig hinkrieg?


open(datei, ">>", "1.txt") || die print "Datei konnte nicht erstellt werden!\n";

print datei @second;

close(datei);

open(DATA,"<","1.txt");
open(OUT,">","$name2");
foreach $line (<DATA>) # Entfernt leere Zeilenumbrüche
{
if ($line =~ m/[a-z]|[0-9]/i)
{
print OUT $line;
}
}$string=~ tr/<html>/s/d;
close(DATA);
close(OUT);
MisterL
 2008-02-17 13:51
#105998 #105998
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
....der eine Teil des Codes lässt sich nur im Zusammenhang mit dem restlichen Programm und ansonsten verfügbaren Dateien sinnvoll bewerten und verbessern ;-)
Zudem man
Code: (dl )
1
2
use strict;
use warnings;

nicht unterlasen sollte.
“Perl is the only language that looks the same before and after RSA encryption.”
Gast Gast
 2008-02-17 14:00
#105999 #105999
ok. hier ist er:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/local/bin/perl


use LWP::UserAgent;

print "\nWEBWORD gestartet!\n\n";

print "\nBitte Adresse angeben: (http://beispiel.de) ";
chop($input_address = <STDIN>);

print "\nName der Wordlist: ";
$name = <STDIN>;
$name2 = "$name.txt";

$a1 = "$input_address";
$agent = new LWP::UserAgent;
$request = HTTP::Request->new('GET',$a1);
$result = $agent->request($request);
$a1 =~ s/.*\///;
$a1 = "temp1.txt";

open(lookME, ">", "temp1.txt") || die print "Datei konnte nicht erstellt werden!\n";
print lookME $result->content();
close(lookME);
open(IP,"<","temp1.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
@IN = <IP>;
close(IP);
unlink "temp1.txt" || die print "Datei konnte nicht geloescht werden!\n";

foreach $string1 (@IN)

{
$string1 =~ s/<.+?>//g;
$string1 =~ s/{.+?}//g;
}

foreach $word (@IN) {
$word =~ tr/ /\n/;
push(@second,"$word");
}

foreach $string (@second)
{
$string =~ tr/,;.:_[¨!]{}$£§¬°1+|"@*#ç¼%½&¬¦(¢)]=}?´'^`~<>-//d;
$string =~ s!/!!g;
$string =~ s!\\!!g;
$string =~ s! !!g;
$string =~ s! !!g;
}

open(datei, ">>", "1.txt") || die print "Datei konnte nicht erstellt werden!\n";

print datei @second;

close(datei);

open(DATA,"<","1.txt");
open(OUT,">","$name2");
foreach $line (<DATA>)
{
if ($line =~ m/[a-z]|[0-9]/i)
{
print OUT $line;
}
}$string=~ tr/<html>/s/d;
close(DATA);
close(OUT);
unlink("1.txt");


mit use strict; und use warnings; kommen einfach ne menge fehlermeldungen die mir nichts sagn,
renee
 2008-02-17 14:29
#106000 #106000
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zum Thema use strict mal diesen Wiki:Artikel durchlesen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-02-17 14:34
#106001 #106001
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was soll diese Zeile machen? if ($line =~ m/[a-z]|[0-9]/i)

Hast Du Dir mal "1.txt" angeschaut, was da so drinsteht?

Und was soll diese Zeile machen ? $string=~ tr/<html>/s/d;

Gibt es Fehlermeldungen? Was macht das Programm? Was soll es machen?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
betterworld
 2008-02-17 16:28
#106003 #106003
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Es wird nun wohl nicht Dein Problem loesen, aber ich wuerde mal "die print" durch einfach "die" ersetzen. perldoc -f die
Gast Gast
 2008-02-17 18:09
#106006 #106006
Was soll das denn???
Code: (dl )
1
2
3
4
5
6
7
open(lookME, ">", "temp1.txt") || die print "Datei konnte nicht erstellt werden!\n";
print lookME $result->content();
close(lookME);
open(IP,"<","temp1.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
@IN = <IP>;
close(IP);
unlink "temp1.txt" || die print "Datei konnte nicht geloescht werden!\n";


Das gleich macht:
Code (perl): (dl )
@in=split(/[\r\n]+/)

Das ist auch weniger Anfällig denn der Zeilentrenner unter Unix ist "\n" unter Windows "\r\n" Perl beachtet das per Default. Internetseiten müssen aber nicht immer mit "\r\n" bzw "\n" formatiert sein.
topeg
 2008-02-17 18:41
#106007 #106007
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
ungetestet:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/local/bin/perl

use strict;
use warnings;
use LWP::UserAgent;


print "\nWEBWORD gestartet!\n\n";
print "\nBitte Adresse angeben: (http://beispiel.de) ";

chomp(my $input_address = <STDIN>);

print "\nName der Wordlist: ";
chomp(my $name = <STDIN>); # auch hier das entfernen des "\n" nicht vergessen!
$name .= ".txt";

my $agent = new LWP::UserAgent;
my $request = HTTP::Request->new('GET',$input_address);
$result = $agent->request($request);

my $words=$result->content();
$words =~s/[\r\n]+/ /gs; # Zeilenumbrüche entfernen
$words =~s/<.+?>/ /g; # sehr anfällig. Löscht unter Umständen zu viel / zu wenig
$words =~s/{.+?}/ /g; # wofür ist das? CSS??
$words =~tr/\W\S//d; # Sonderzeichen entfernen

my @word_list=split(/\s+/,$words); # Wörter aufteilen und in Array schreiben.

open(OUT,">",$name) or die "Konnte ($name) nicht oeffnen ($!)\n";
print OUT join("\n",@word_list);
close(OUT);


Das Script sollte so ziemlich das selbe machen wie deines nur mit weniger unnötigen Aktionen. Dein Problem liegt an den ständigen schreiben und lesen von Dateien ohne auf die System spezifischen Zeilenumbrüche zu achten. Weißt du nicht wie man Splittet / mit Arrays bearbeitet?
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2008-02-17 10:14.