Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game. |
| Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
 |
GNU/Linux Basic Guide
This 255-page guide will provide you with the keys to understand the philosophy of free software, teach you how to use and handle it, and give you the tools required to move easily in the world of GNU/Linux. Many users and administrators will be taking their first steps with this GNU/Linux Basic guide and it will show you how to approach and solve the problems you encounter.
Click Here to receive this Complete Guide absolutely free. |
|
 |
03-01-2009, 08:41 AM
|
#1
|
|
Member
Registered: Jan 2009
Location: India
Distribution: fc9 x86_64
Posts: 35
Rep:
|
please help me with this perl code getting error "use of uninitialized value"
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.
|
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);
}
|
|
|
|
03-01-2009, 10:10 AM
|
#2
|
|
Member
Registered: Jan 2009
Location: India
Distribution: fc9 x86_64
Posts: 35
Original Poster
Rep:
|
please all ppl out there hel me
i am stuck
|
|
|
|
03-01-2009, 10:10 AM
|
#3
|
|
Member
Registered: Jan 2009
Location: India
Distribution: fc9 x86_64
Posts: 35
Original Poster
Rep:
|
please all ppl out there hel me
i am stuck
|
|
|
|
03-01-2009, 10:47 AM
|
#4
|
|
Member
Registered: Sep 2007
Location: Mariposa
Distribution: Debian lenny, Slackware 12
Posts: 806
Rep: 
|
Well, if it says:
Code:
Use of uninitialized value $_ in scalar chomp at ./iothread.pl line 66, <GEN1> line 1.
then you'd better look at line 66, right?
Line 66 looks like this:
Code:
chomp; # ($client);
What do you expect that line to do for you? What purpose does it serve in your program?
|
|
|
|
03-01-2009, 03:58 PM
|
#5
|
|
Senior Member
Registered: May 2005
Posts: 4,397
|
Quote:
Originally Posted by wje_lq
Well, if it says:
Code:
Use of uninitialized value $_ in scalar chomp at ./iothread.pl line 66, <GEN1> line 1.
then you'd better look at line 66, right?
Line 66 looks like this:
Code:
chomp; # ($client);
What do you expect that line to do for you? What purpose does it serve in your program?
|
I would even ask a more particylar question: "What's the argument of 'chomp' ?".
|
|
|
|
03-01-2009, 04:03 PM
|
#6
|
|
Member
Registered: Sep 2007
Location: Mariposa
Distribution: Debian lenny, Slackware 12
Posts: 806
Rep: 
|
Quote:
|
I would even ask a more particylar question: "What's the argument of 'chomp' ?".
|
In his code, it doesn't have one. But Perl doesn't require that it have one. That's why I'm asking him what he thinks the statement is supposed to do for him.
|
|
|
|
03-01-2009, 04:15 PM
|
#7
|
|
Senior Member
Registered: May 2005
Posts: 4,397
|
Quote:
Originally Posted by wje_lq
In his code, it doesn't have one. But Perl doesn't require that it have one. That's why I'm asking him what he thinks the statement is supposed to do for him.
|
Well, if a function doesn't have an argument (but it's not the case), then what does it do ?
Burns CPU time ? Changes a global variable randomly ?
|
|
|
|
03-01-2009, 07:26 PM
|
#8
|
|
Member
Registered: Sep 2007
Location: Mariposa
Distribution: Debian lenny, Slackware 12
Posts: 806
Rep: 
|
This would be an interesting discussion to have at some point, but right now I'm mainly interested in what haxpak's intention was on line 66. haxpak? You still there?
|
|
|
|
03-01-2009, 09:11 PM
|
#9
|
|
Senior Member
Registered: May 2005
Posts: 4,397
|
Quote:
Originally Posted by wje_lq
This would be an interesting discussion to have at some point, but right now I'm mainly interested in what haxpak's intention was on line 66. haxpak? You still there?
|
I don't think there is a place for discussion, but I do think it's worth reading the manual. What about
perldoc -f chomp
?
My question about 'chomp' argument was a very practical one.
|
|
|
|
03-01-2009, 10:01 PM
|
#10
|
|
Member
Registered: Sep 2007
Location: Mariposa
Distribution: Debian lenny, Slackware 12
Posts: 806
Rep: 
|
Quote:
|
My question about 'chomp' argument was a very practical one.
|
I never doubted your intention.
So. haxpak, you still there? - As Sergei Steshenko would ask:
Quote:
|
What's the argument of 'chomp' ?
|
- As I would ask: what's your intention with line 66?
Code:
chomp; # ($client);
|
|
|
|
03-01-2009, 10:55 PM
|
#11
|
|
Senior Member
Registered: Feb 2004
Location: SE Tennessee, USA
Distribution: Gentoo, LFS
Posts: 4,554
|
I agree with this line of reasoning: "what is your intention," and, "do you know what your intention is?"
This isn't a "slam" ... isn't public humiliation ... it's necessary in really understanding and solving any problem.
Perl has many "implied arguments," in this case as in many other cases (see perldoc perlvar), which can make it cryptic. But if you can first latch upon the designer's intent, whether "the designer" is you or someone else, the nature of any logic error usually reveals itself quickly.
I would urge you to respond: this is the help you are asking for. Participate. (Others are watching intently.)
Last edited by sundialsvcs; 03-01-2009 at 10:56 PM.
|
|
|
|
| Thread Tools |
Search this Thread |
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -5. The time now is 12:37 AM.
|
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|