Mario: Hilfe! Termine Datei auslesen und ausgeben

Ich habe ein problem...
script was ich habe liest die termine datei und gibt diese dann aus
es werden aber alle termine ausgegeben was ich nicht möchte.
ich möchte das nur (einstellbar auf anzahl der anzuzeigenden  termine) z.B. ein termin augegeben wird ..
ich finde die lösung nicht!! könnt ihr mir helfen???

script:

#!/usr/bin/perl

termine.cgi

#use CGI::Carp qw(fatalsToBrowser);

$termine= 4;  # Anzahl der anzuzeigenden Termine
$faktor= int (0/$termine);

--- Datum ermitteln ----------------------------------

($sek, $min, $std, $tag, $mon, $jhr, $wtg, $jtg, $isdst)=localtime(time);
$mon ++;
$jhr=$jhr+1900;
&Wochentag;
$datum=sprintf('%02d.%02d.%04d',$tag, $mon, $jhr);

--- Kalender Datei lesen -----------------------------

if(open(IN, 'calendar_events.txt')){
 @liste=<IN>;
 close(IN);
}
else{die;}

--- Kalender Datei vorbereiten -----------------------

foreach $zeile (@liste) {
 ($id,$xdatestamp,$label,$desc) = split(/|/,$zeile,4);
 $xjhr=substr($xdatestamp,0,4);
 $xmon=substr($xdatestamp,4,2);
 $xtag=substr($xdatestamp,6,2);
 if ($xjhr eq "0000"){
  $xdatestamp=$jhr.$xmon.$xtag;
 }
 $liste[$i]=$xdatestamp.'|'.$label.'|'.$desc;
 $i++;
}

--- Kalender Datei sortieren -------------------------

@liste = sort {$a cmp $b} @liste;

--- Kalender Datei ausgeben --------------------------

foreach(@liste) {
 chomp;
 next unless /^\d/;
 ($xdatestamp,$label,$desc) = split(/|/,$_,3);
 $xjhr=substr($xdatestamp,0,4);
 $xmon=substr($xdatestamp,4,2);
 $xtag=substr($xdatestamp,6,2);
 if ((($xjhr*365)+($xmon*30)+$xtag) >= (($jhr*365)+($mon*30)+$tag)) {
  $anz++;
  if (($xtag==$tag) & ($xmon==$mon) & ($xjhr==$jhr)){
   $farbe="yellow";
  }
  else{
   $farbe="#000000";
  }
  $tab=$tab.'<tr><td valign="top" bgcolor="#86B580" height="1"><b><font face="Arial" size="2" color="'.$farbe.'">'."$xtag.$xmon.$xjhr</b>  --  $label</font></td></tr>";
  $tab=$tab.'<tr><td valign="top" bgcolor="#A7C8A2"><font face="Arial" style="margin-top: 5; margin-bottom: 20" size="2">'.$desc.'<br></font><br></td></tr>';
 }

}
$height=int($faktor*$anz);
$tab='<table border="0" cellpadding="0" cellspacing="0" valign="top" bgcolor="#A7C8A2" bordercolor="#000000" bordercolordark="#000000" height="95%" width="100%">'.$tab;
if ($anz==0) {
 $tab='<table border="0" cellpadding="0" cellspacing="0" valign="top" bgcolor="#A7C8A2" bordercolor="#000000" bordercolordark="#000000" height="95%" width="100%"><font face="Arial" size="2" color="'.$farbe.'"><center>keine Termine vorhanden</center></font>';
}

--- HTML Header einrichten ---------------------------

print <<Kopf1;
Content-type: text/html

$tab
</table>
Kopf1

##################################################################################

UNTERPROGRAMME

##################################################################################
sub datum
DIE UNTERPROGRAMME HABE ICH UND ES FUNKTIONIERT ALLES

  1. Hi Mario,

    es werden aber alle termine ausgegeben was ich nicht möchte.

    dann darfst Du nicht mit "foreach" alle Termine gleich behandeln:

    --- Kalender Datei ausgeben --------------------------

    foreach(@liste) {

    Viele Grüße
          Michael

    --
    T'Pol: I apologize if I acted inappropriately.
    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
    1. Hi Michael

      dann darfst Du nicht mit "foreach" alle Termine gleich behandeln:

      in dem script kann man die anzahl der anzuzeigende termine einstellen

      $termine= 4;  # Anzahl der anzuzeigenden Termine

      aber ich finde keine zuordnung zu $termine

  2. Wie, was soll ich machen mit

    foreach(@liste) {

    , kann mir das jemmand erklären