Here's a brief analysis:
$mech->submit_form( # invoke the submit_form() object method. $form_string => $d, # Anything to the left of a # => is treated as like it's 'single quoted' # That means variables are not interpolated. # This is a possible bug in your script, # but not the one you're asking about. # *** Next comes the bug you're asking about. fields => { # The curly bracket begins an # anonymous hash. $param_string # This is a single scalar value } # You've completed the creation of the anonymous hash, but # you created it with one key (the contents of $param_string) # and no associated value. So you get an error message. );
If you want $param_string to represent a bunch of key/value pairs, you should first split it on its delimiter. After reading the comment in your code I assume you mean that the string is key/value delimited with =>, and each pair delimited with something else like maybe comma (,). If that's correct, this ought to do what you want:
$mech->submit_form( $form_string, $d, fields => { split( /=>\s+|,\s+/, $param_string ) } );
Of course you'll get into trouble quickly if it turns out that you have embedded commas within quoted text, and that sort of thing. If that's the case, you'll probably want to parse $param_string with a more robust tool.
Dave
In reply to Re: passing a variable as a string
by davido
in thread passing a variable as a string
by coldfingertips
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |