Hi all, I am now making a bookshelf program with perl. At this very beginning, I do wonder if the below script can be simpler or not...
sub getQuery { my $queryStr = @_; my %ret; if (! $queryStr) { $ret{user} = 'system' ; $ret{book} = 'index' ; $ret{page} = 0 } else { ( $ret{user}, $ret{book}, $ret{page} )= ($1, $2, $3) if ( $queryStr =~ /^([a-z_]+)\.([a-z_]+)&p=(\d+)$/i ); ( $ret{user}, $ret{book}, $ret{page} )= ($1, $2, 0 ) if ( $queryStr =~ /^([a-z_]+)\.([a-z_]+)$/i ); ( $ret{user}, $ret{book}, $ret{page} )= ($1, 'index', 0 ) if ( $queryStr =~ /^([a-z_]+)$/i ); } return %ret } #### MAIN #### my %query = getQuery($ENV{QUERY_STRING}); ### Go on for param validation ### #### END #### In case, I am assuming user's query will be : 1. http://whatever.tld/cgiDir/ 2. http://whatever.tld/cgiDir/?username 3. http://whatever.tld/cgiDir/?username.bookname 4. http://whatever.tld/cgiDir/?userName.bookName&p=pageNum <- PageNum is an integer of cause I know that could be somehow to change the query as a fix style and with handle like /?user=who&book=what&page=num, so I can deal with it by hash. But does anyway can make the above script simpler if I really got to deal on query string as this way ? ( Actually I am interested to learn what I can do to deal with this matching =) ) Thanks alot for any commence, Smiley Connie =)