570

problema de perl

b'lea m-a zae'bit perl-ul asta, deci iata problema, pentru a descrie problema du care m-am ciocnit am facut asa o aplicatie:use strict;my $x;if($x){print("x\n");}else{print("!x\n");}if($x == 0){print("x == 0\n");}else{print("x != 0\n");}if($x == "0"){print("x == \"0\"\n");}else{print("x != \"0\"\n");}if($x == "00"){print("x == \"00\"\n");}else{print("x != \"00\"\n");}if($x == ""){print("x == \"\"\n");}else{print("x != \"\"\n");}if($x == " "){print("x == \" \"\n");}else{print("x != \" \"\n");}if($x == " "){print("x == \" \"\n");}else{print("x != \" \"\n");}my %xx;if($xx{'abc'}){print("xx{'abc'}\n");}else{print("!xx{'abc'}\n");}if($xx{'abc'} == 0){print("xx{'abc'} == 0\n");}else{print("xx{'abc'} != 0\n");}if($xx{'abc'} == "0"){print("xx{'abc'} == \"0\"\n");}else{print("xx{'abc'} != \"0\"\n");}if($xx{'abc'} == "00"){print("xx{'abc'} == \"00\"\n");}else{print("xx{'abc'} != \"00\"\n");}if($xx{'abc'} == ""){print("xx{'abc'} == \"\"\n");}else{print("xx{'abc'} != \"\"\n");}if($xx{'abc'} == " "){print("xx{'abc'} == \" \"\n");}else{print("xx{'abc'} != \" \"\n");}if($xx{'abc'} == " "){print("xx{'abc'} == \" \"\n");}else{print("xx{'abc'} != \" \"\n");}si iata rezultatul pe care-l da ea:!xx == 0x == "0"x == "00"x == ""x == " "x == " "!xx{'abc'}xx{'abc'} == 0xx{'abc'} == "0"xx{'abc'} == "00"xx{'abc'} == ""xx{'abc'} == " "xx{'abc'} == " "exact acelasi output aplicatia da cand initializez hash-ul sau variabila x cu 0, cu "", cu " ", cu " "..., cu "0", cu "00"...pentru mine asta e o mare problema, in aplicatiile CGI nu pot determina daca nu s-a transmis nimic, sau s-a transmis 0, sau daca s-a transmis un string cu spatii, sau un empty string.si inac ceva de adaugat la stupiditatea problemei#x neinitializatprintf("x = {$x}\n");$x = 0; printf("x = {$x}\n");$x = "00"; printf("x = {$x}\n");$x = " "; printf("x = {$x}\n");$x = " "; printf("x = {$x}\n");da asa un output:x = {}x = {0}x = {00}x = { }x = { }Deci o sumedenie de situatii absolut diferite pe care nu le pot nicidecum sa le fac o diagnostica in cod...
0