ermittlung der zeilenanzahl bei textdatenbanken
Manuel Burghammer
- perl
0 Alexander Kiel0 Rolf0 timothy
wenn ich per
open(DATA, "<forum.db") print " Datenbank ist nicht zu Öffnen !!";
@datas = <DATA>;
close DATA;
eine datenbank auslese steht dann in irgendeiner systemvariable die anzahl der zeile ??....
ich hab schon 7 dokus durchgeforstet aber kann einfach nix finden......für hilfe wär ich dankbar..
MfG
Manuel
Hi Manuel
open(DATA, "<forum.db") print " Datenbank ist nicht zu Öffnen !!";
@datas = <DATA>;
close DATA;
Du hast die Datei jetzt zeilenweise in dem Array @datas.
Mach folgendes:
$len = @datas;
Dann steht in $len die Anzahl der Scalaren in dem Array, was der Zeilenanzahl gleichkommt.
ALEX
hi alex,
dankeschön....das probier ich sofort aus....wenn das klappt ist das genial.....warum bin ich da nicht selber draufgekommen ??..~grübel~
Manuel
wenn ich per
open(DATA, "<forum.db") print " Datenbank ist nicht zu Öffnen !!";
@datas = <DATA>;
close DATA;eine datenbank auslese steht dann in irgendeiner systemvariable die anzahl der zeile ??....
ich hab schon 7 dokus durchgeforstet aber kann einfach nix finden......für hilfe wär ich dankbar..
MfG
Manuel
Nuja, es gibt tatsächlich eine Variable mit der aktuellen Zeilennummer: "$." teste das mal so:
open (WINI, "c:/windows/win.ini") die "$!";
while (<WINI>){
chomp;
push @wini, $_; # zeilenweise pushen
$az = $.; # $. enthält die aktuelle Zeilennummer
}
close WINI;
print "Die WINI hat $az Zeilen...\n";
Steht auch so in SELFHTML ;-) Rolf
hallo,
Steht auch so in SELFHTML ;-) Rolf
sorry...hab ich nicht gefunden...wohl falsch gesucht..~schäm~....
trotzdem danke....werds mal versuchen
Manuel
Hallo Manuel
sorry...hab ich nicht gefunden...wohl falsch gesucht..~schäm~....
Tja, das ist bei den Perl docs nicht immer ganz einfach. Diese ganzen seltsamen Variablen sind in der 'perlvar' page gesammelt.
Wenn Du wirklich nur nach dem Einlesen die Anzahl der Zeilen feststellen willst, solltest Du hier aber die von Alex vorgeschlagene Variante (Array in skalaren Kontext setzen) bevorzugen. Diese duerfte um einiges effizienter sein.
So lange, Calocybe
Hi,
na dann möchte ich auch noch einen Beitrag leisten.
Wie immer aus dem "Perl Cookbook":
8.2. Counting Lines (or Paragraphs or Records) in a File
Problem
You need to compute the number of lines in a file.
Solution
Many systems have a wc program to count lines in a file:
$count = wc -l < $file
;
die "wc failed: $?" if $?;
chomp($count);
You could also open the file and read line-by-line until the end, counting lines as you go:
open(FILE, "< $file") or die "can't open $file: $!";
$count++ while <FILE>;
Here's the fastest solution, assuming your line terminator really is "\n":
$count += tr/\n/\n/ while sysread(FILE, $_, 2 ** 16);
Discussion
Although you can use -s $file to determine the file size in bytes, you generally cannot use it to derive a line count. See the Introduction to Chapter 9, Directories, for more on -s.
If you can't or don't want to call another program to do your dirty work, you can emulate wc by opening up and reading the file yourself:
open(FILE, "< $file") or die "can't open $file: $!";
$count++ while <FILE>;
Another way of writing this is:
open(FILE, "< $file") or die "can't open $file: $!";
for ($count=0; <FILE>; $count++) { }
If you're not reading from any other files, you don't need the $count variable in this case. The special variable $. holds the number of lines read since a filehandle was last explicitly closed:
1 while <FILE>;
$count = $.;
This reads all the records in the file and discards them.
To count paragraphs, set the global input record separator variable $/ to the empty string ("") before reading to make <> read a paragraph at a time.
$/ = ''; # enable paragraph mode for all reads
open(FILE, $file) or die "can't open $file: $!";
1 while <FILE>;
$para_count = $.;
Bye
Timothy