Perl – Dateiinhalt Spaltenweise sortiert ausgeben
Problem: Es soll ein Dateiinhalt Spaltenweise und nicht Zeilenweise sortiert in einer Tabelle ausgegeben werden. Dieser Code zeigt wie es funktioniert.
Komplettes Beispiel
Beim ausgeben von Dateiinhalten in Tabellen werden diese immer nach dem Schema von Bild 1 ausgegeben.
Möchte man die Daten aber Spaltenweise sortiert ausgeben, Schema Bild 2, so muss man das Hauptarray teilen und kann es dann Spaltenweise ausgeben.
Als Beispiel soll diese fiktive Mitgliederdatei benutzt werden:
1|Walter|Helmut|2004.02.02|Deutschland|M 2|Meyer|Lisa|2003.12.28|Deutschland|W 3|Müller|Maximilian|2002.05.22|Schweiz|M 4|Lehmann|Hubert|2002.11.01|Oesterreich|M 5|Schulze|Stefanie|2004.01.04|Deutschland|W 6|Wolter|Willy|2002.06.09|Oesterreich|M 7|Thomas|Eva-Maria|2004.01.17|Schweiz|W 8|Schneyder|Jean|2001.09.04|Frankreich|M 9|Clerc|Pascale|2002.11.17|Frankreich|M 10|Benguerel|Sebastian|2003.08.10|Spanien|M 11|Carl|Johanna|2002.10.01|Deutschland|W
Das Script hierzu:
#!/usr/bin/perl
#Fehlerausgabe an Browser
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
# Datei auslesen
open (DATEI, "<namensliste.dat") or die "Kann namensliste.dat nicht oeffnen $!\n";
flock (DATEI, 2);
my @namen = <DATEI>;
close DATEI;
# Dateiinhalt sortieren nach Nachnamen
my @sortiertes_array = sort sortabc(@namen);
# Zeilenzahl festellen
my $anzahl = scalar(@sortiertes_array);
# Teilen durch 2
my $halb = int($anzahl / 2);
# Wenn 2 mal die Hälfte nicht $anzahl, 1 addieren
if (2 * $halb < $anzahl) {
$halb += 1;
}
# Tabellenkopf
print qq~
<table cellspacing="2" cellpadding="2" border="1">
~;
# Zähler (optional)
my $halbcount1 = 0;
my $halbcount2 = $halb;
foreach my $z (0..$halb-1) {
# Gesamtarray in zu Teilarrays (@erste - @zweite) zuweisen
my @erste = @sortiertes_array[0...$halb-1];
my @erste_spalte = split(/\|/, $erste[$z]);
my @zweite = @sortiertes_array[$halb...$anzahl-1];
my @zweite_spalte = split(/\|/, $zweite[$z]);
$halbcount1++;
$halbcount2++;
# Ausgabe
if ($halbcount1 <= $halb && $zweite_spalte[1] ne '') {
print qq~<tr>
<td>$halbcount1</td>
<td><b>$erste_spalte[1]</b> $erste_spalte[2]</td>
<td>$halbcount2</td>
<td><b>$zweite_spalte[1]</b> $zweite_spalte[2]</td>
</tr>
~;
}
elsif ($zweite_spalte[1] eq '') {
print qq~<tr>
<td>$halbcount1</td>
<td><b>$erste_spalte[1]</b> $erste_spalte[2]</td>
<td> </td>
<td> </td>
</tr>
~;
}
}
print "</table>";
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Sortiersubroutine
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub sortabc {
@atopkg = split(/\|/,$a);
@btopkg = split(/\|/,$b);
$atopkg[1] cmp $btopkg[1];
}
Weitere Beiträge
Home Office im Grünen: Warum ebenerdige Ferienhäuser der ideale Rückzugsort für digitale Nomaden sind
Ebenerdige Wochenendhäuser und Ferienhäuser. Das Internet hat die Art und Weise, wie wir kommunizieren, arbeiten und unsere Freizeit gestalten, grundlegend verändert. Es hat sich zu einem integralen Bestandteil unseres täglichen Lebens entwickelt und ermöglicht es uns, unsere Arbeit von nahezu jedem Ort aus zu erledigen. Für viele Webmaster, Programmierer und Online-Autoren ist der klassische Büroalltag […]
Aktuelle Desktop-Betriebssysteme im Vergleich für Webmaster
Aktuelle Desktop-Betriebssysteme unterscheiden sich für Webmaster vor allem bei Entwicklungs-Tools, Sicherheit, Automatisierung und Kosten. Entscheidend ist weniger das „schnellste“ System, sondern welches Betriebssystem den eigenen Web-Workflow am effizientesten unterstützt. Webmaster arbeiten typischerweise mit Code-Editoren, Browser-Developer-Tools, lokalen Webservern, Versionsverwaltung und Automatisierungsskripten. Betriebssysteme beeinflussen, wie reibungslos diese Werkzeuge zusammenspielen, wie stabil und sicher sie laufen und wie […]
Interaktiver Businessplaner 2026 für Kindle Scribe – Planen, Ziele erreichen, Erfolg steigern
Immer mehr Menschen möchten sich online ein nachhaltiges Einkommen aufbauen. Digitale Geschäftsmodelle bieten heute viele Chancen mit vergleichsweise geringem Startkapital. Etsy‑Shop‑Betreiber, digitale Nomaden und Online‑Autoren verfolgen dabei klare wirtschaftliche Ziele. Ohne strukturierte Planung bleibt langfristiger Erfolg jedoch meist dem Zufall überlassen. Ein digitaler Businessplaner auf dem Kindle Scribe bringt die gewünschte Lösung. Für eine minimale […]
Windows 11 Shortcuts: Die wichtigsten Tastaturbefehle für schnelleres Arbeiten
Profis kennen die wahre Stärke von Tastaturbefehlen unter Windows 11. Wer effizient arbeiten möchte, nutzt Shortcuts statt ausschließlich der Maus. Windows 11 bietet zahlreiche neue Funktionen mit passenden Tastenkombinationen. Microsoft setzt weiterhin konsequent auf bewährte und neue Shortcuts. Diese Befehle gehören fest zum Betriebssystem und steigern die Produktivität spürbar.
Keine Kommentare vorhanden