LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   perl networking and mysql error (https://www.linuxquestions.org/questions/linux-newbie-8/perl-networking-and-mysql-error-708386/)

haxpak 03-01-2009 11:15 AM

perl networking and mysql error
 
hi
i am getting error as:
Use of uninitialized value in concatenation (.) or string at ./iothread.pl line 86, <GEN1> line 1.
during runtime

and
the output looks like this:
[QUOTE]
Multiplex server running on port 4444...
Created thread 1 for new client 10.168.1.2:3233
Use of uninitialized value $_ in scalar chomp at ./iothread.pl line 66, <GEN1> line 1.
1005874632400418
1234
login

Use of uninitialized value in concatenation (.) or string at ./iothread.pl line 86, <GEN1> line 1.
10895
Thread 1 terminated abnormally: Not a CODE reference at ./iothread.pl line 87, <GEN1> line 1.
[QUOTE]
i am not concatenating anything here??

Code:


#!/usr/bin/perl
# iothreadserv.pl
use warnings;
use strict;
use integer;

BEGIN
        {
        use Config;
        die "No thread support!\n" unless $Config{'usethreads'};
        }

use Thread;
use IO::Socket;
use DBI;
use DBD::mysql;

# Autoflushing on
$| = 1;
my $port = 4444;
my $server = IO::Socket->new(
        Domain    => PF_INET,
        Proto    => 'tcp',
        LocalPort => $port,
        Listen    => SOMAXCONN,
        Reuse    => 1,
);

die "Bind failed: $!\n" unless $server;
print "Multiplex server running on port $port...\n";

while (my $connection = $server->accept)
        {
        my $name = $connection->peerhost;
        my $port = $connection->peerport;
        my $thread = new Thread(\&connection, $connection, $name, $port);
        print "Created thread ",$thread->tid," for new client $name:$port\n";
        $thread->detach;
        }
exit;


# child thread - handle connection
sub connection
{
        my ($connection, $name, $port) = @_;
        $connection->autoflush(1);
        #############################my sql connect###############################
        my $platform = "mysql";
        my $database = "project";
        #my $host = "localhost";
        #my $port = "3306";
        my $user = "root";
        my $pw = "";
       
        # DATA SOURCE NAME
        my $dsn = "dbi:mysql:$database";
       
        # PERL DBI CONNECT
        my $dbh = DBI->connect($dsn, $user, $pw) or die "cannot connect to database";
       
        #######################################################################33

        print $connection "You're connected to the server!\n";
        my $client = <$connection>;
        chomp; # ($client);
        #while (<$connection>) {
        if ($client =~ /::login/)
        {
                print $connection "Login Initiated\n";
                my $rand = int(rand(100000));
                print $connection "Your rand number : $rand";
                #$client =~ s/([\$\@\\])/\\$1/mg; ##escape all $, @ and \
                #$client = quotemeta $client;
                my @recv_string = split /::/ , $client;
                foreach (@recv_string)
                {
                print "$_ \n";
                }
                #next line injection possible !! REMOVE IT!!
                my $sth = $dbh->prepare("select * from Temp_ID where TEMP_NO = $recv_string[0]");
                $sth->execute();
                #take only one output row
                my $ref = $sth->fetchrow_hashref();       
#                $sth->finish();
                print "$ref->{'Temp_ID'} $ref->{'CARD_ID'}\n";
                $sth = $dbh->("select PIN from Cards where Card_ID = $ref->{CARD_ID}");
                $sth->execute();
#                $sth->finish();
               
                my $ref2 = $sth->fetchrow_hashref();
                if ($recv_string[1] eq $ref2->{PIN})
                        {
                        print $connection "PIN verified OK";
                       
                        }
                       
               
        }
       
        if ($client =~ /:logout/)
        {
                print $connection "You are being Logged OUT\n";
        }
        print "Client $name:$port says: $client \n";
              print $connection "Message received OK\n";
        #        }
        $dbh->disconnect;
        $connection->shutdown(SHUT_RDWR);
}


Tinkster 03-01-2009 04:47 PM

Please post your thread in only one forum. Posting a single thread in the most relevant forum will make it easier for members to help you and will keep the discussion in one place. This thread is being closed because it is a duplicate.
http://www.linuxquestions.org/questi...isible-708377/

Follow-ups to in Programming:
http://www.linuxquestions.org/questi...d.php?t=708363


All times are GMT -5. The time now is 03:07 PM.