Hello,
Thanks for quick answer.

>>> In Message "Re: Bug#375938: spampd: configure file is never read"
>>>            <[EMAIL PROTECTED]>,
>>> Sven Mueller <[EMAIL PROTECTED]>  said;
> Tatsuki Sugiura wrote on 29/06/2006 05:55:
> > "--config" option do not work properly, because $options{'config'}
> > has scalar reference. Mail::SpamAassasin always fail to read config file.
> > 
> > Please remove key from %options, or use dereference (like
> > ${options{'config'}}).
> > # Now, I'll attach a patch of key remove version.

> To be honest, I don't really understand your patch. How does removing
> 'config' from %options help? With that path, $options('config') is never
> defined and thus spampd will never even try to read a config file.
> Also, I must admit I'm not Perl expert, but why do the other references
> work as expected while this one doesn't?

GetOptions() will set value into reference if key was defined as
reference before GetOptions() called..., nnnnn, I don't have enough
English skill to explain this...

Please look following code;

---------[ getopt-test.pl ]-------------------------------------------
#!/usr/bin/perl
#
use Getopt::Long;
use Data::Dumper;

my $optfoo = "default-foo";

# pre-define some keys
my %options = (
               foo => \$optfoo,      # GetOptions() will set into $optfoo
               bar => "default-bar", # will be overrided
              );

GetOptions(\%options,
           'foo=s',
           'bar=s',
           'baz=s',                  # new key
          );

print Dumper(\%options);
print "foo: ", $options{foo}, "\n";
print "bar: ", $options{bar}, "\n";
print "baz: ", $options{baz}, "\n";
--------------------------------------------------------------------

And try to write this code into getopt-test.pl and run it like;

    perl getopt-test.pl --foo=fooval --bar=barval --baz=bazval

So, you'll get a result below;

--------------------------------------------------------------------
$VAR1 = {
          'bar' => 'barval',
          'baz' => 'bazval',
          'foo' => \'fooval',
        };
foo: SCALAR(0x814f7e0)
bar: barval
baz: bazval
--------------------------------------------------------------------

You can choice from 3 to get content of "foo" option specified by user;

  * use dereference like ${$options{foo}}
  * use $optfoo instead of $options{foo}
  * remove key 'foo' from %options, and use $options{foo}


> As far as I understand the problem, this should fix it, right? (Just
> pasted here, so mind the unintended linebreaks)

Yes, you took right way.

> PS: Other bug fixed in SVN, will wait with the upload until this one is
> also resolved.

Thanks lot :)
-- 
Tatsuki Sugiura   mailto:[EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to