Hello,
I fixed it, the string would initially contain special characters such
as % signs. I strip out all the characters before the check, instead of
after.
Michael.
On Wed, 2005-03-30 at 16:19 -0700, Michael Gale wrote:
> Hello,
>
> I tried your example, it worked as expected, here is the entire code:
>
> --snip--
>
> my @servers;
> my $each_server;
> my $each_host;
> my %seen = ( );
>
> print "<h2>List of systems being performance monitored</h2>\n";
> print "Please select a host\n";
>
> opendir(RRDDIR,"/home/nagios/network-monitor/nagiosgraph/rrd")
> || die "Can't find servers";
> @servers = readdir(RRDDIR);
> closedir RRDDIR;
>
> sub show_host{
> my($each_host) = @_;
> my $thost;
> $each_host =~ /(.*)_(.*)_/;
> $thost = $1;
> $thost =~ s/\%2D/ /g;
> #print "$thost<BR>\n";
> print "<option value=\"$thost\">$thost\n";
> }
>
> print "<form name=serverlist action=layout.cgi
> method=GET>\n";
> print "<select name=server size=10>\n";
>
> foreach my $each_server(@servers)
> {
> unless ($seen{$each_server}) {
> $seen{$each_server} = 1;
> show_host($each_server);
> }
> }
>
> print "</select>\n";
> print "</form>\n";
>
> --snip--
>
> On Wed, 2005-03-30 at 18:12 -0500, Offer Kaye wrote:
> > On Wed, 30 Mar 2005 15:53:25 -0700, Michael Gale wrote:
> > >
> > > But it is not working as expected, even if the array has the first three
> > > entries the same, the function "show_host" gets called three time ?
> > >
> > > foreach $each_server(@servers)
> > > {
> > > unless ($seen{$each_server}) {
> > > $seen{$each_server} = 1;
> > > show_host($each_server);
> > > }
> > > }
> > >
> >
> > The code is okay. Try just the following in a standalone file:
> > ########## begin code
> > use strict;
> > use warnings;
> > my @servers = qw/a a a b c d/;
> > my %seen;
> > foreach my $each_server(@servers) {
> > unless ($seen{$each_server}) {
> > $seen{$each_server} = 1;
> > show_host($each_server);
> > }
> > }
> > sub show_host {
> > print "$_[0]\n";
> > }
> > ########## end code
> > If you run it, you will see it just prints "a" once, not 3 times.
> > So the problem is in some other code you are not showing us.
> > --
> > Offer Kaye
> >
>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>