From: Moritz Bunkus Date: Thu, 4 Feb 2010 13:37:27 +0000 (+0100) Subject: Scriptparameter sowohl via %ENV als auch von @ARGV und STDIN auswerten X-Git-Tag: release-2.6.2beta1~299 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=570abc830fa2c4382d1b731297420c4eefde8cc4;p=kivitendo-erp.git Scriptparameter sowohl via %ENV als auch von @ARGV und STDIN auswerten Bisher war es so, dass -- in aufsteigender Priorität -- entweder STDIN mit $ENV{QUERY_LENGTH}, $ENV{QUERY_STRING} oder $ARGV[0] als Eingabe gelesen wurde. Nun werden alle drei Kanäle in der Reihenfolge $ENV{QUERY_STRING}, $ARGV[0] und STDIN gelesen und ausgewertet. Die Eingaben überschreiben sich nur bei identischen Keys, ergänzen sich aber ansonsten. Beispiel:
sorgt für zwei Key/Value-Paare in $form; who => me und action => Gogogo. --- diff --git a/SL/Form.pm b/SL/Form.pm index cfffd78e2..bf9deb4ba 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -243,20 +243,17 @@ sub new { tie %{ $self }, 'SL::Watchdog'; } - read(STDIN, $_, $ENV{CONTENT_LENGTH}); + bless $self, $type; - if ($ENV{QUERY_STRING}) { - $_ = $ENV{QUERY_STRING}; - } + $self->_input_to_hash($ENV{QUERY_STRING}) if $ENV{QUERY_STRING}; + $self->_input_to_hash($ARGV[0]) if @ARGV && $ARGV[0]; - if ($ARGV[0]) { - $_ = $ARGV[0]; + if ($ENV{CONTENT_LENGTH}) { + my $content; + read STDIN, $content, $ENV{CONTENT_LENGTH}; + $self->_request_to_hash($content); } - bless $self, $type; - - $self->_request_to_hash($_); - my $db_charset = $main::dbcharset; $db_charset ||= Common::DEFAULT_CHARSET;