Toon posts:

[perl] vage error...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo ik ben een beetje een perl n00b!

Heb een scriptje om te kijken of ik een open socket heb...

[script]
#!/usr/bin/perl

use CGI qw(header);
my $q = new CGI; # CGI object instance
# create a socket to listen to a port
use IO::Socket; # this imports an object-oriented interface to Sockets
use IO::Select; # this gives us more features for Sockets
# both of these modules are standard modules that should already be installed
# you might not have access to open up new ports, though.
use CGI::Carp qw(fatalsToBrowser); # so you can get diagnostic messages from your browser
my $listen = IO::Socket::INET->new(
Proto => 'tcp',
LocalPort => 10000,
Listen => 1,
Reuse => 1) or die $!;
print $q->header(-expires => '-3d');
print "opened the socket just fine!<br>\n";
print "You can now continue learning about sockets on this machine!";
[/script]

Nou is het probleem dat dit script eerst draaide en aangav dat ik een socket had. En nu 1 dag later krijg ik deze error:

Bad file descriptor at test2.pl line 13.

Iemand een verkalring hoe dit komt?
Ohh ik draai dit script bij een ISP dus niet lokaal!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Vraag me af wat lijn 13 is..

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
regel 13....

12 use CGI::Carp qw(fatalsToBrowser); # so you can get diagnostic messages from your browser
13 my $listen = IO::Socket::INET->new(
14 Proto => 'tcp',

....

Verwijderd

Ik heb je scriptje dus net even getest op windows en linux, en het werkt gewoon prima. Het enige wat ik kan bedenken is dat je ISP iets geheimzinnigs heeft gedaan waardoor je nu geen poorten meer kunt openen. Daar maakt het script zelf ook al melding van: '# you might not have access to open up new ports, though.'

Verwijderd

Topicstarter
als ik het goed lees gebruikt het script alleen port 10000,
of zijn dat alle porten tot?

Zou by the way wel toevallig zijn als die ISP dat net op die ene dag gedaan zou hebben!

Bedankt alvast!

  • Grum
  • Registratie: Juni 2001
  • Niet online
draait je scriptje misschien stiekem nog ? zo jah .. je kan niet 2x dezelfde port binden (zonder conflicten)

Verwijderd

Topicstarter
Hmmm goede vraag!

Kben niet echt een perl goeroe! hoe kan ik 'm stoppen dan?
deleten ofzo...

kzal ff nog een andere uploaden op poort 10001.

Verwijderd

Topicstarter
Jajaja,

Gelukkig! Het kan dus nog wel! cool!
Maare nu snap ik het probleem dus niet helemaal...

als ik 10000 doe krijg ik die error...
en bij 10001 doettie het wel....

??? Als ik dit wil gaan gebruiken moet ik natuurlijk niet steeds dit soort errors krijgen!

Wel bedankt voor de tip!

  • Grum
  • Registratie: Juni 2001
  • Niet online
op een linux doos ?

pid opvragen mbv ps en dan killen met kill :)

Verwijderd

Topicstarter
Op donderdag 31 januari 2002 12:57 schreef Grum_ het volgende:
op een linux doos ?
Ja op een Unix doos!

[quote]
pid opvragen mbv ps en dan killen met kill :)
[/qoute]

Kun je deze ff uitleggen....
Kben meer bekend et andere dingen als perl en linux!

Verwijderd

Topicstarter
kan toch wel iemand me vertellen hoe ik het script dan ook moet afsluiten..?

Want uit die vorige beschrijving kan ik (nog) niet zoveel maken...

  • windancer
  • Registratie: Maart 2000
  • Laatst online: 08-09 01:06
Uit man perl :
If something strange has gone wrong with your program and
you're not sure where you should look for help, try the -w
switch first. It will often point out exactly where the
trouble is.
Whenever you get mysterious
behavior, try the -w switch!!! Whenever you don't
get mysterious behavior, try using -w anyway.
The -w switch produces some lovely diagnostics.
Did we mention that you should definitely consider using
the -w switch?
BUGS
The -w switch is not mandatory.
If you get my point ;-)

Verwijderd

If you get my point ;-)
Volgens mij niet echt, want ik heb dit ook al meerdere malen tegen hem gezegd...

Dus: #!/usr/bin/perl -w

en

use strict;

Verwijderd

Topicstarter
meerdere keren tegen mij gezegd?

Dacht het niet hoor...?!

maare kga het ff proberen!

Verwijderd

Topicstarter
hmmm...

heb er dit van gemaakt:
[script]
#!/usr/bin/perl -w

use CGI qw(header);
use DBI;
use strict qw(header);
use CGI::Carp qw(fatalsToBrowser);
use strict qw(fatalsToBrowser);
$dsn ="DBI:mysql:xxxxxxx";
$user ="xxxxxxx";
$password = "xxxxxxx";
$dbh = DBI->connect($data_source, $username, $password) or die $DBI::errstr;
[/script]


Can't connect( xxxxxx), no database driver specified and DBI_DSN env var not set at mysql_check.pl line 11

hierin is xxxxxx mijn database password???

Wat moet er komen bij:
$dsn ="DBI:mysql:xxxxxxx"; #localhost of ip of bd_naam?

Betekent dit nou dat ik geen DBI heb????

Ohh enne als dat het geval zou zijn, denken jullie dan dat ik dat kan installeren bij de ISP of moet ik ff gaan zeuren of ze dat willen doen!?

Nogmaals n00b in need of help! Mzzl

Verwijderd

meerdere keren tegen mij gezegd?
Dacht het niet hoor...?!
Jawel, maar dat was in een andere draad. 8-)

Je hebt dus wel DBI, anders zou hij wel zeuren dat hij DBI.pm niet kon vinden, maar nu moet je nog goed connecten, en blijkbaar maak je daar een foutje in.
code:
1
2
3
4
$dsn ="DBI:mysql:xxxxxxx";
$user ="xxxxxxx";
$password = "xxxxxxx";
$dbh = DBI->connect($data_source, $username, $password) or die $DBI::errstr;

Het lijkt me handig om $dsn in $data_source te veranderen, of andersom.

Dit zou moeten werken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl -w

use strict;

use CGI qw(header);
use DBI;
use CGI::Carp qw(fatalsToBrowser);

my $dsn ="DBI:mysql:xxxxxxx";
my $user ="xxxxxxx";
my $password = "xxxxxxx";
my $dbh = DBI->connect($dsn, $username, $password) or die $DBI::errstr;

Vergelijk dit even met je eigen code, want de manier waarop je 'use strict' gebruikt slaat nergens op.

Je zult nu ook merken, nu 'use strict' echt ingeladen is, dat je variabelen echt met 'my' moet declareren, anders gaat perl moeilijk doen.

Verwijderd

Topicstarter
He ik heb je code ff gebrobeerd maare nu krijg ik weer me oude melding:

Execution of mysql_check.pl aborted due to compilation errors.

i.p.v. dat uitgebreide!?

Bedankt voor je hulp hoor, maare wat denk je dat er bij:
my $dsn ="DBI:mysql:xxxxx";
moet komen?
- localhost en database naam werken niet, misschien pad van de database ofzo?
Misschien ligt het daaraan?

Ohh enne thread kan ik me niet herinneren, jij?

Nou ik hoop dat je me nog verder kan helpen!?

Mzzl

Verwijderd

Topicstarter
ik heb een scriptje gevonden die systeem scant op alle libs en alles wat er zo ongeveer opstaat...

zegt:

<b>Perl libraries installed<B>
Library CGI v2.46 installed
Library mod_perl v1.21 installed
The library www-perl is not installed
Library DBI v1.11 installed
Library DBD::mysql v2.0406 installed
The library URI is not installed
Library Apache v1.26 installed
Library Digest::MD5 v2.12 installed
The library Crypt::SSLeay is not installed

Dus inderdaad DBI en DBD geinstalleerd!

Maare dan doe ik iets anders fout, maare wat!?

Verwijderd

Topicstarter
Volgens mij is het al gelukt!

Bedankt, kwam door je code uit andere (toch wel gezegd -w) topic! Khad nog niet gelezen...
Pagina: 1