sub main () { #Verwendete Module use Spreadsheet::WriteExcel; #Modul für die Erstellung von Excel-Dateien #Variablendeklaration @ergebnis; my $dateiname_match = 'match.txt';        #Match-Datei fuer Aufsummieren zwischen CCM und Softguard my @sum_komponenten_ccm; #Aufsummierte Anzahl der Komponenten CCM my @sum_komponenten_sg; #Aufsummierte Anzahl der Komponenten SG my $datum; #Datum wann Dateien erstellt wurden my $zeit; #Zeit wann Dateien erstellt wurden        @auswahl;                                                       #Getroffene Auswahl von Auswahl.html        @bool_auswahl;                                                  #Array, mit Boolean Werten, ob in Auswahl Feld gewählt wurde. Gleicher Aufbau wie CCM und Softguard Abgleich        @vorgabe_ueberschrift = ("sg.Device" ,"sg.DNS", "sg.Status", "sg.sysDescription", "sg.sysContact", "sg.sysName", "sg.sysLocation", "sg.SNr",                "sg.FirstReport", "sg.LastReport", "ccm.Identitaet", "ccm.Klasse", "ccm.Hersteller", "ccm.Typ", "ccm.Subtyp", "ccm.Ort", "ccm.Gelaende",                "ccm.Gebaeude", "ccm.Etage", "ccm.Raum", "ccm.Prefix", "ccm.Postfix", "ccm.Sortierung", "ccm.SNr", "ccm.Status", "ccm.Abgleichskriterium"); #Softguard @softguard; #Daten von Softguard @copy_softguard; my @wrong_sysall; #Fehlerliste für syscontact, syslocation, sysname my $datenbank = "SoftGuard"; #Bezeichnung der Datenenbank my $benutzer = "root"; #Benutzer der Datenbank my $pw = "sg24audi"; #PW des Datenbankusers my $max_tage = 28; #Maximale Anzahl der Tage, welche seit letzten Report vergangen sein dürfen #CCM @ccm; #Daten von CCM @copy_ccm; my $datei_ccm = "ccm.txt"; #Bezeichnung der Datei von CCM my @auswahl_typ = ('6C105', 'AP-3', '1G582-09', '1G587-09', '1G694-13', '1H582-25', '1H582-51', '2E252-49R', '2E253-49R', '2E43-27R', '2H252-25R', '2H253-25R', '2H258-17R', 'MicroMMAC-24E', 'MINI-MMAC', 'MMAC-M8FNB', 'MMAC5-FNB', 'SEHI-24', 'Smart Switch 2200', 'SSR-16', 'SSR-8', 'STHI-24', 'V2H124-24', 'VH-2402SM', 'AL1001B01', 'AL1001B02', 'AL2001A15', 'AL2001B15', 'AL2001B20', 'AL2012A14', 'AL2012B19', 'AL2012B34', 'AL4512B01', 'DJ1402001', 'DS1402001', 'DS1402002', 'EB1404015', 'EB1412003', 'IP 330', 'IP 350', 'IP 380', 'IP 440', 'IP 530', 'NBB3740000', '6E123-26', '6E233-49', '6G306-06', '6H202-24', '6H203-24', '6H252-17', '6H253-13', '6H258-17', '6H303-48', '6H308-24', '6H308-48', '6H352-25', '7H4382-49', '9C300-1', '9C306', '9C406', '9E106-06', '9E132-15', '9E423-36', '9F206-02', '9F241-12', '9F426-02', '9F426-03', '9H421-12', '9H422-12', '9H423-28', 'EMME', 'FOMIM-22', 'FOMIM-26', 'FORMIM-22', 'Alteon', 'Base Director', 'SA7225', 'SG 800-2', 'SG 800-3', '1600', '2501', '2503', '2504', '2612', '7000', '803', 'AGS', 'NSM', 'Backbone Concentrator Node', 'Backbone Link Node');        print "Content-type: text/html\n\n";        #Uebergebene Argumente empfangen read(STDIN, my $tmp, $ENV{'CONTENT_LENGTH'}); #Uebergebenes post lesen @post_uebergabe = split(/&/, $tmp); #Uebergebene Daten aufsplitten foreach(@post_uebergabe) { ($data, $tmp) = split (/=/, $_);                 push @auswahl, $data; }        delete ($auswahl[-1]);                                           #Letztes Element ist ok von Buttonklick -->loeschen       #Einlesen der Daten chdir ("/usr/local/apache/htdocs/audi_zusatz/"); #Vezeichnis wechseln &get_softguard(\$datenbank, \$benutzer, \$pw, \$max_tage); &get_ccm(\$datei_ccm, \@auswahl_typ); #ABGLEICH SG - CCM @copy_ccm = @ccm; @copy_softguard = @softguard; &abgleich_id(); &abgleich_snr(); &abgleich_dns(); &abgleich_dns_ipname(); &abgleich_snr_cabletron();        &get_bool_auswahl();        for ($i=0; $i<26; $i++) {       #Ueberschriftenzeile erzeugen                push @ueberschrift, $vorgabe_ueberschrift[$i] if ($boolean_auswahl[$i] eq "1");        }                &make_html();        &make_excel(\$datum, \$zeit); exit(0); } Der Excel-Schnipsel: #################################################################################################################################### #  Funktion zum Erstellen der Excel Datei für die einzelnen Komponenten aus CCM #################################################################################################################################### sub make_excel{ my ($tmp_datum, $tmp_zeit) = @_; my $dateiname = 'auswahl_abgleich.xls';                #Variable fuer den Dateiname my $workbook; #Arbeitsmappe in Excel my $worksheet; #Arbeitsblatt in Excel my $format_ueberschrift;        #Format fuer Ueberschriften my $format_std; #Format fuer Standardtabellenschrift my $format_tab_kopf;         #Format fuer Tabellenkopf my $i; #Laufvariable fuer Schleife my $zeile=4; #Aktuelle Zeile, in die geschrieben wird (4 als Start, da darüber der Kopf der Tabelle steht)        my $anzahl_spalten;                                     #Anzahl der Spalten        my $spalte = 0;       chdir ("../zusatz/"); $workbook = Spreadsheet::WriteExcel->new($dateiname);        $worksheet = $workbook->add_worksheet(); #Worksheet hinzufuegen &def_format_excel (\$workbook, \$format_ueberschrift, \$format_std, \$format_tab_kopf); $worksheet->write(0, 0, "Erstellt am $$tmp_datum um $$tmp_zeit", $format_ueberschrift); $worksheet->set_row(1, 30); #Höhe von 1. Zeile auf 30 setzen $worksheet->write(1, 0, "Devices Auswahl Abgleich CCM - Softguard", $format_ueberschrift); #Tabellenkopfzeile (Zeile: 3) schreiben $worksheet->set_row(3, 25, $format_tab_kopf); #Fuer Zeile 3 Höhe 25 sowie Format setzen $worksheet->write_row(3, 0, \@ueberschrift);        $anzahl_spalten = scalar@{$ergebnis[0]}; foreach (@ergebnis) {         for ($i=0; $i <26; $i++) {                        if ($boolean_auswahl[$i] eq "1") {                     $worksheet->write($zeile, $spalte, $_->[$i], $format_std);                                $spalte++;                        } } $zeile++; } }#Ende excel_abgleich