Hi,
use CGI;
benutzt Du auch:
#!/usr/bin/perl -w
use strict;
open(file, "$filename");
perldoc perlfaq4
What's wrong with always quoting "$vars"?
@lines=<file>;
Vorher mit 'my' deklariert?
my $Index = $query->param('Index');
if ($Index eq ''){$Index = 0;}
my $index = $query->param('Index') || 0;
Lies zu Großschrift in Variablennamen bitte
perldoc perlstyle
Auch in URL-Parametern macht sich Kleinschrift irgendwie besser.
my $maxcount = $query->param('Index')+ $images_per_pages;
Auch hier mit '($query->... || 0)' einen Defaultwert zuweisen, sonst meckert strict (welches Du aus genau diesem Grund verwenden solltest).
$maxcount = $#lines if $maxcount>$#lines;
$maxcount = scalar @lines if ...
"$#array" meinst Du eigentlich gar nicht; es ist ein Index auf das letzte Element des Arrays, nicht die Anzahl der Elemente. Achte darauf, ob und wann Du anschließend "+1" hinzufügen musst.
my $linecount;
[...]
for($linecount = [...]
for (my $linecount = ...
{
chomp $lines[$linecount];
}
Ah. Was hälst Du von:
chomp @lines;
Also, wo jetzt der Logik-Fehler liegt, hab ich vor lauter Stil- und Syntax-Fehlern leider nicht gesehen ;-) aber was hälst Du von etwas in dieser Richtung:
foreach my $line (@lines[ (
(($query->param('Index') || 0) < 0)
? 0
: (($query->param('Index') || 0) > scalar @lines)
? scalar @lines
: ($query->param('Index') || 0)
) .. (
(($query->param('Index') || 0) < 0)
? 0
: (($query->param('Index') || 0) > scalar @lines)
? scalar @lines
: ($query->param('Index') || 0)
) ]) {
print $line, "\n";
}
(ungetestet)
Wobei ich ehrlich gesagt vorziehen würde, nicht die komplette Datei einzulesen, sondern etwa wie folgt vorzugehen:
my $count = 0; # Ja, hier kann man auch $. verwenden; ich bevorzuge dies.
open(READ, $file) or die "Kann $file nicht oeffnen: $!";
while (<READ>) {
next if (++$count < ($query->param('Index') || 0));
end if ($count > ($query->param('Index') || 0)+$images_per_pages);
print $_, "\n";
}
close(READ);
Achte auf die exakten Grenzen; vielleicht sind es bei diesem Code dann 69 oder 71 Bilder oder so :-)
Cheatah