Thread erst String dann Hash (9 answers)
Opened by SaschaTen at 2007-12-04 12:37

renee
 2007-12-04 14:13
#103438 #103438
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ein paar Anmerkungen:

*) warum use Switch? Soweit ich das sehe wird das gar nicht verwendet!

*)
Code (perl): (dl )
1
2
3
4
5
my @dirs;
   $dirs[0]   = "/etc/nagios/objects/hosts/linux/";
   $dirs[1]   = "/etc/nagios/objects/hosts/netview/";
   $dirs[2]   = "/etc/nagios/objects/hosts/switches/";
   $dirs[3]   = "/etc/nagios/objects/hosts/windows/";


Könnte man auch so schreiben:

Code (perl): (dl )
1
2
my $dir_base = "/etc/nagios/objects/hosts/";
my @dirs = ( $dir_base . "linux/", $dir_base . "netview/", $dir_base . "switches/", $dir_base . "windows/" );


*) Du deklarierst einige Variablen schon vor der while-Schleife, obwohl Du sie erst in der Schleife brauchst.

*)
Code (perl): (dl )
1
2
      my $sth1 = $dbh1->prepare("SELECT netz FROM hosts WHERE hostname LIKE \"%".$hostname."%\"");
         $sth1->execute();


besser:
Code (perl): (dl )
1
2
      my $sth1 = $dbh1->prepare("SELECT netz FROM hosts WHERE hostname LIKE ?");
         $sth1->execute( '%' . $hostname . '%' );

Damit werden schon evtl. vorhandenen SQL-Sonderzeichen gequotet... Außerdem fängst Du keine Fehler ab (würde z.B. so gehen:
Code (perl): (dl )
      my $sth1 = $dbh1->prepare( ... ) or die $dbh1->errstr;
)


*)
Code (perl): (dl )
1
2
3
4
my @nets = {};
   $nets[0] = "NetzA";
   $nets[1] = "NetzB";
   $nets[2] = "NetzC";


vs.
Code (perl): (dl )
my @nets = ("NetzA","NetzB","NetzC");


*) hier gleich mehrere Sachen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my $x = 0;
my $y = 0;

#...

for(my $i=0; $i < $#nets; $i++)
{
  $x = 0;
  $y = 0;
  open(FILE, ">".$mapdir.$nets[$i].".cfg");
  print FILE "define global {\n";
  print FILE "usegdlibs=1\n";
  print FILE "allowed_user=nagios\n";
  print FILE "allowed_for_config=nagios\n";
  print FILE "iconset=std_medium\n";
  print FILE "map_image=grey.png\n";
  print FILE "}\n";


vs.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
for my $net ( @nets ){
  my $x = 0;
  my $y = 0;

  open(FILE, ">".$mapdir.$net.".cfg") or die $!;
  print FILE qq~define global {
usegdlibs=1
allowed_user=nagios
allowed_for_config=nagios
iconset=std_medium
map_image=grey.png
}
~;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread erst String dann Hash