From 570abc830fa2c4382d1b731297420c4eefde8cc4 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 4 Feb 2010 14:37:27 +0100 Subject: [PATCH] Scriptparameter sowohl via %ENV als auch von @ARGV und STDIN auswerten MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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. --- SL/Form.pm | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) 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; -- 2.20.1