AW: Use of uninitialized valued in concatenation....
It is not a standard perl error message. I went through mod_perl doc at http://perl.apache.org/docs/general/perl_reference/perl_reference.html#T racing_Warnings_Reports and understand that, the error message appear if one fails to pass a value to a subroutine before using. Looking through my codes, you may have noticed that, I did pass 2 arguments to the subroutine. -Ursprüngliche Nachricht- Von: Perrin Harkins [mailto:[EMAIL PROTECTED] Gesendet: Samstag, 23. August 2003 00:10 An: B. Fongo Cc: [EMAIL PROTECTED] Betreff: Re: Use of uninitialized valued in concatenation On Fri, 2003-08-22 at 17:23, B. Fongo wrote: I have a file (output_tab.pm) that I use to generate tables dynamically. Even though it serves its purpose, it goes on generating this error: Script_name.pl: Use of uninitialized value in concatenation (.) or string at output_tab.pm line 42. This is a standard perl error message. It is not related to mod_perl. You can look in the perldiag man page for a more complete explanation. - Perrin -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html
AW: AW: Use of uninitialized valued in concatenation....
Oh yes I did. I always try my script on the command line to ensure the syntax are ok before running them on the web server with mod_perl. So the error has to do with mod_perl. Perhaps you may want to take a look of some examples: I have a file (output_tab.pm) that I use to generate tables dynamically. Even though it serves its purpose, it goes on generating this error: Script_name.pl: Use of uninitialized value in concatenation (.) or string at output_tab.pm line 42. I went through this section of mod_perl docs und thought Ive understood it, but I cant feature out the error. Ill appreciate any help. Below is my module and a script that triggers such error. # output_tab.pm #- # Modulname: output_tab.pm #- use strict; package output_tab; use vars qw(@ISA @EXPORT); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(output_tab); use db_Verbindungen; sub output_tab{ my ($dbh,$abfrage,$columnspan, $sth,@table_head,@table_data); ($abfrage, @table_head) = @_; $columnspan = @table_head; print qq(table width=95% border=1 cellspacing=1 cellpadding=1 align=center); print qq(tr bgcolor=#a9a9a9); foreach (@table_head){ print qq(th$_/th); } print qq(/tr); # Erbnisse Anzeigen $dbh = db_Verbindungen; $sth = $dbh-prepare($abfrage); $sth-execute(); print qq(tr); while(@table_data = $sth-fetchrow_array){ #my $table_data; foreach (@table_data) { print qq(td bgcolor='#d0d0d0'$_/td); # Here is line 42 } print qq(/tr); } print qq(trtd colspan=$columnspan bgcolor='#d0d0d0'nbsp;/td/tr); print qq(/table); $sth-finish(); $dbh-disconnect(); } 1; ### #!/usr/bin/perl -w # #Script: pakete_auflisten.pl #= use strict; use db_Verbindungen; use gui; use output_tab; my ($dbh,$abfrage,@table_head); $abfrage = ('SELECT Gruppe, Paketname, Auftragsdatum, Status, Statusmeldung FROM Gruppen_Software ORDER BY Auftragsdatum DESC'); @table_head = qw(Gruppe Paketname Auftragsdatum Status Statusmeldung); # Aufruf der Methode top() des gui.pm Moduls. top('Paketliste'); # At this stage i call the method output_tab with two arguements. output_tab($abfrage,@table_head); # Aufruf der Methode footer() des gui.pm Moduls. footer(); #== ENDE== Babs -Ursprüngliche Nachricht- Von: Sreeji K Das [mailto:[EMAIL PROTECTED] Gesendet: Samstag, 23. August 2003 11:10 An: B. Fongo; 'Perrin Harkins'; [EMAIL PROTECTED] Betreff: Re: AW: Use of uninitialized valued in concatenation Did u check what's in line # 42 ? If u run the same script with same params as stand-alone, do u see the warning ? Sreeji --- B. Fongo [EMAIL PROTECTED] wrote: It is not a standard perl error message. I went through mod_perl doc at http://perl.apache.org/docs/general/perl_reference/perl_reference.html#T racing_Warnings_Reports and understand that, the error message appear if one fails to pass a value to a subroutine before using. Looking through my codes, you may have noticed that, I did pass 2 arguments to the subroutine. -Ursprüngliche Nachricht- Von: Perrin Harkins [mailto:[EMAIL PROTECTED] Gesendet: Samstag, 23. August 2003 00:10 An: B. Fongo Cc: [EMAIL PROTECTED] Betreff: Re: Use of uninitialized valued in concatenation On Fri, 2003-08-22 at 17:23, B. Fongo wrote: I have a file (output_tab.pm) that I use to generate tables dynamically. Even though it serves its purpose, it goes on generating this error: Script_name.pl: Use of uninitialized value in concatenation (.) or string at output_tab.pm line 42. This is a standard perl error message. It is not related to mod_perl. You can look in the perldiag man page for a more complete explanation. - Perrin Want to chat instantly with your online friends? Get the FREE Yahoo! Messenger http://uk.messenger.yahoo.com/ -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html
Re: AW: Use of uninitialized valued in concatenation....
Did u check what's in line # 42 ? If u run the same script with same params as stand-alone, do u see the warning ? Sreeji --- B. Fongo [EMAIL PROTECTED] wrote: It is not a standard perl error message. I went through mod_perl doc at http://perl.apache.org/docs/general/perl_reference/perl_reference.html#T racing_Warnings_Reports and understand that, the error message appear if one fails to pass a value to a subroutine before using. Looking through my codes, you may have noticed that, I did pass 2 arguments to the subroutine. -Ursprüngliche Nachricht- Von: Perrin Harkins [mailto:[EMAIL PROTECTED] Gesendet: Samstag, 23. August 2003 00:10 An: B. Fongo Cc: [EMAIL PROTECTED] Betreff: Re: Use of uninitialized valued in concatenation On Fri, 2003-08-22 at 17:23, B. Fongo wrote: I have a file (output_tab.pm) that I use to generate tables dynamically. Even though it serves its purpose, it goes on generating this error: Script_name.pl: Use of uninitialized value in concatenation (.) or string at output_tab.pm line 42. This is a standard perl error message. It is not related to mod_perl. You can look in the perldiag man page for a more complete explanation. - Perrin Want to chat instantly with your online friends? Get the FREE Yahoo! Messenger http://uk.messenger.yahoo.com/ -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html
Re: AW: AW: Use of uninitialized valued in concatenation....
Am Sat, 23 Aug 2003 09:48:05 + schrieb B. Fongo: foreach (@table_data) { print qq(td bgcolor='#d0d0d0'$_/td); # Here is line 42 } as Frank already pointed out, your trouble is the uninitialized $_ value you have in line 42 (which is exactly what the warning tells you, BTW). the reason for this is very probably that @table_data contains items that have not been initialized (= they have no value, not even an empty value assigned to them). @table_data is filled from database, so _check your database_. I bet you will find null values in here. if you don't want to output anything if the database delivers such a null value simply replace your line 42 with -CUT-- print qq(td bgcolor='#d0d0d0'$_/td) if $_; -CUT-- if you want to output an empty line for null values, then do as Frank suggested: -CUT-- my $val=$_||'NULL'; print qq(td DEFANGED_bgcolor=0#d0d0d0$val/td); -CUT-- and no, this has definitively absolute nothing to do with mod_perl, thats just expected and normal perl behaviour. happy hacking udo -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html
Re: Re: AW: AW: Use of uninitialized valued in concatenation....
-CUT-- my $val=$_||'NULL'; print qq(td DEFANGED_bgcolor=0#d0d0d0$val/td); -CUT-- This is not a very good solution. You would also catch the case where $_ is 0, which may should not happen. You would better do foreach (@table_data) { $_ = defined $_ ? $_ : NULL; print qq(td bgcolor='#d0d0d0'$_/td); # Here is line 42 } Basically you also simply could use the warnings pragma within this sub : no warnings uninitialized; greets, Marcel -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html
Re: Re: AW: AW: Use of uninitialized valued in concatenation....
On Sat, Aug 23, 2003 at 01:55:03PM +0200, Marcel Greter wrote: This is not a very good solution. You would also catch the case where $_ is 0, which may should not happen. You would better do Yes... I always fall into that pithole. I think this is because I find the 'defined(...) ? ... : ...' phrase is kinda ugly. Silly me, I know. $_ = defined $_ ? $_ : NULL; Still... I don't know if I like toying around with $_. Especially since you change the real array value (and not a copy) and this might cause problems later on (should you use the values somewhere else as well). But why are we talking about this on a mod_perl list. Sorry guys. --Frank -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html
Re: AW: AW: Use of uninitialized valued in concatenation....
Frank Maas wrote: On Sat, Aug 23, 2003 at 01:55:03PM +0200, Marcel Greter wrote: This is not a very good solution. You would also catch the case where $_ is 0, which may should not happen. You would better do Yes... I always fall into that pithole. I think this is because I find the 'defined(...) ? ... : ...' phrase is kinda ugly. Silly me, I know. $_ = defined $_ ? $_ : NULL; perl 5.9 has introduced a new operator //= to make it spiffy, so you'd write the above as: $_ //= NULL; __ Stas BekmanJAm_pH -- Just Another mod_perl Hacker http://stason.org/ mod_perl Guide --- http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html
AW: Use of uninitialized valued in concatenation....
OK Guys! Thanks for all the contributions. All along, I thought mod_perl was complaining that $_ isn't initialized. Most of the suggestions I got points to the array (@table_data) in the loop. It is actually true that the some of the values of the array are NULL. Thanks again for all those suggestions. Babs -Ursprüngliche Nachricht- Von: news [mailto:[EMAIL PROTECTED] Im Auftrag von Udo Rader Gesendet: Samstag, 23. August 2003 13:00 An: [EMAIL PROTECTED] Betreff: Re: AW: AW: Use of uninitialized valued in concatenation Am Sat, 23 Aug 2003 09:48:05 + schrieb B. Fongo: foreach (@table_data) { print qq(td bgcolor='#d0d0d0'$_/td); # Here is line 42 } as Frank already pointed out, your trouble is the uninitialized $_ value you have in line 42 (which is exactly what the warning tells you, BTW). the reason for this is very probably that @table_data contains items that have not been initialized (= they have no value, not even an empty value assigned to them). @table_data is filled from database, so _check your database_. I bet you will find null values in here. if you don't want to output anything if the database delivers such a null value simply replace your line 42 with -CUT-- print qq(td bgcolor='#d0d0d0'$_/td) if $_; -CUT-- if you want to output an empty line for null values, then do as Frank suggested: -CUT-- my $val=$_||'NULL'; print qq(td DEFANGED_bgcolor=0#d0d0d0$val/td); -CUT-- and no, this has definitively absolute nothing to do with mod_perl, thats just expected and normal perl behaviour. happy hacking udo -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html