Thread Kommaseparierte Listen bereichsweise ausgeben. (28 answers)
Opened by Gast at 2006-04-14 16:54

toby
 2006-04-15 03:59
#64960 #64960
User since
2006-04-14
66 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen! :)

vielen Dank für Eure Tips! Nun sieht meine (unsere ;-) ) Lösung der Hausaufgabe so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl

use strict;
use warnings;

my ($key, $min, $max) = @ARGV;

open LISTE, "list.txt";
my @liste=<LISTE>;

while(@liste){
$_=shift(@liste);
if (m/$key=(\d+)/ && $1 >= $min && $1 <= $max){
print;
}
}

close(LISTE);


Geht das so, oder habe ich da noch grobe Patzer, wie vorhin mit dem skalar und dem Filehandling?

Um ehrlich zu sein, habe ich den reg exp nicht verstanden, daher werde ich gleich noch lesen, was das gemau macht.

Danke auch für den Fingerzeig zum Filehandling! Dazu habe ich aber doch noch eine Frage:

Warum kann ich aber nicht direkt mit while() auf das Handle "LISTE" zugreifen?

Code: (dl )
1
2
3
4
5
6
7
8
open LISTE, "list.txt";

while(<LISTE>){
$_=shift(@_);
if (m/$key=(\d+)/ && $1 >= $min && $1 <= $max){
print;
}
}


Dies produziert mir: "Use of uninitialized value in pattern match (m//) at ./test.pl line 13, <LISTE> line 1". Muss ich immer unbedingt den "Umweg" über "@liste" machen?

Danke und lieben Gruß!
Tobias\n\n

<!--EDIT|toby|1145059293-->

View full thread Kommaseparierte Listen bereichsweise ausgeben.