![]() |
Brauche Hilfe mit Perl
Hallo,
ich studiere germanistische Sprachwissenschaften und dieses Semester muss ich ein Seminar zum Programmieren für Sprachwissenschaftler besuchen. Nun bin ich eher der Bücherwurm als der Computernerd. Jedenfalls folgende Frage: Wie kann ich einen STDIN von beliebiger Länge in der Mitte teilen? Also die eigentliche Frage ist, wie ich im Befehl split sozusagen "Mitte" hinkriege. Ich hatte die Idee, Längen zu definieren und dann chop zu nutzen, aber das Problem bleibt das gleiche, da die Eingabe beliebig lang sein kann. Weiß jemand mehr? LG The_Horse |
z.B. mit length die Länge ermitteln und mit substr auf die Teile des String zugreifen.
|
Suchst du sowas?
#!/usr/bin/perl use warnings; while ( $line = <> ) { chomp($line); # CR am Ende der Zeile entfernen my @zeichen = split (//, $line); my $anzahl_der_zeichen = scalar(@zeichen); print "Es wurden $anzahl_der_zeichen gefunden\n"; for (my $i = 0; $i < $anzahl_der_zeichen / 2; $i++) { print "$zeichen[$i]"; } print "\n"; } |
Vorwort: damit auch Strings ungerader Länge verarbeitet werden können, wird in meiner Lösung einfach die Hälfte der String-Länge auf die nächste Ganzzahl aufgerundet. Ist also je nach Anwendungsfall nicht ganz sauber.
In Perl gibt es bekanntlich viele Wege, um etwas zu erreichen. Im Folgenden mittels regulärem Ausdruck und alternativ "unpack": Code:
use POSIX; # für Aufrunden via ceil Code:
$VAR1 = [ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.