doofe frage zu perl script das net läuft

garraty47

Mitglied
Thread Starter
Mitglied seit
18.11.2004
Beiträge
547
hi!
ich möchte frü die verwendung mit geektool mit diesem perlscript, dass ich ohne ahnung von perl irgendwo entdeckt habe, die heutigen ereignisse aus ical auslesen.
das script ist ausführbar gemacht per chmod, und es läuft anscheinend auch, nur ohne jegliche ausgabe.
der pfad zum kalender stimmt, und am heutigen tag sind auch ereignisse eingetragen.
wo könnte da das problem liegen?
im moment kriege ich nur einen compilation error :
Code:
syntax error at ical.pl line 12, near ")"
Code:
#!/usr/bin/perl
use strict;

# Extracts today's data from iCal and prints it in simple text-only format. Recommended usage with
#  GeekTools (http://www.geektools.com) to display today's agenda on the desktop at all times.
#
# Required: iCal
#
# Note: This program needs lots of customization to work. iCal dumps its data into folders with long, arbitrary names, usually 
#       in /Users/username/Library/Application Support/iCal/Sources/_____Long name____/corestorage.ics Before you start, you 
#       need to check which data belongs to which calendar. Then, fill in the hash as appropriate. Two examples from my computer are given:

my %calendars= (
	     "cal1" => "/Users/meinuser/Library/Application Support/iCal/Sources/6DE8BC03-1DFF-4A4E-8722-B4202AD44C6D.calendar/corestorage.ics",

	     

	    "cal2" => "/Users/meinuser/Library/Application Support/iCal/Sources/8C0B1ACC-0D80-471C-B6C0-9E2309C51EAE.calendar/corestorage.ics",

	   

	     "cal3" => "/Users/meinuser/Library/Application Support/iCal/Sources/7608AB0A-6818-42B0-B8C5-2457868FF0F1.calendar/corestorage.ics",

	     

	     "cal4" => "/Users/meinuser/Library/Application Support/iCal/Sources/B8AC64E0-5CF4-4A43-8254-B9D2403B71DB.calendar/corestorage.ics",

	     

	       "cal5" => "/Users/meinuser/Library/Application Support/iCal/Sources/B57D709A-2720-45D1-9F81-A81ACC97968C.calendar/corestorage.ics",

	       

	       "cal6" => "/Users/meinuser/Library/Application Support/iCal/Sources/EB6A7AED-B71A-4D7B-9DD2-EB1C754EBCE2.calendar/corestorage.ics"	   

	          );
#
# Author: David Berman
# Last Modified: September 2006


chomp(my $now = `date "+%Y%m%d"`); #get and print today's date
print `date "+%a %m/%d/%Y"`;

foreach (keys %calendars){  #run print sub on each hash element
    open (raw_data, $calendars{$_}) 
	or die "Error reading data for the $_ calendar: $!\\n";
    &searchAndPrint($_);
}

#Subroutine to search through the text and print out proper information
sub searchAndPrint{
    my($eventTime, $eventDescription);
    print "\\n---$_[0]---\\n"; #print title
    while(defined($_ = <raw_data>)){ #loop through data
	if(/DTSTART.*($now)/){   #search for today 
	    if(/T(\\d\\d\\d\\d)\\d\\d/){  #get time
		chomp($eventTime= $1);   #convert to 12-hour clock
		if($eventTime == 0){$eventTime = "midnight";}
		elsif($eventTime > 0 && $eventTime < 0100){ $eventTime= $eventTime + 1200 . " am";}
		elsif($eventTime >=0100 && $eventTime <1200){ $eventTime = $eventTime . " am" ;}
		elsif($eventTime == 1200){ $eventTime = "noon" ;}
		elsif($eventTime > 1200 && $eventTime <1300){ $eventTime = $eventTime . " pm";}
		elsif($eventTime >=1300){ $eventTime = $eventTime - 1200 . " pm";}
	    }	    
	    until(/SUMMARY/){$_ = <raw_data>;} #move down to "summary"
	    if(/(SUMMARY):(.*)/){chop($eventDescription = $2);} #get event description
	    
	    print "$eventDescription @ $eventTime \\n";  #print line
	}
    }
}
 
Zuletzt bearbeitet:

garraty47

Mitglied
Thread Starter
Mitglied seit
18.11.2004
Beiträge
547
falkgottschalk schrieb:
Seit wann ist PEARL direkt im OS ausührbar? Wäre mir neu.
dang gewähre mir unwissenden doch einen tip wie ich es zum laufne bekomme, unter welchen voraussetzungen etc.
 

MacMännchen

Mitglied
Mitglied seit
03.10.2006
Beiträge
2.881
falkgottschalk schrieb:
Seit wann ist PEARL direkt im OS ausührbar? Wäre mir neu.
das ist ja auch nicht PEARL, sondern Perl :D
und das läuft sehr wohl ohne Zusatz unter Mac OS X

@garraty47
wie hast du das Skript denn gestartet?
 

garraty47

Mitglied
Thread Starter
Mitglied seit
18.11.2004
Beiträge
547
bis jetzt den source code in subethaedit in eine neue datei gepastet, die ich vorher auf Ascii(ohne Verluste) als dateikodierung umgestellt habe, ausserdem syntaxmodus auf perl umgestellt

dann meine zeilen zu ical in subethaedit geändert, abgespeichert als ical.pl.

dann ins terminal in den entsprechenden ordner und mit
Code:
chmod +x ical.pl
ausführbar gemacht, und dann gestartet mittels
Code:
perl ical.pl
lag da schon der fehler?
 

MacMännchen

Mitglied
Mitglied seit
03.10.2006
Beiträge
2.881
klinkt erst mal gut.

Merkwürdig, ich kann keinen Fehler in Zeile 12 nachvollziehen.
Habe den Code mal durch den Perl Interpreter auf meiner Linux Kiste im Büro gejagt (habe hier leider keinen Mac). Ich erhalte deine Fehlermeldung nicht.

Erst beim Versuch, das iCal file zu lesen, erhalte ich:
"Error reading data for the cal1 calendar"

Logisch, mir fehlen die iCal files.

Vielleicht kann mal jemand den Code auf dem Mac laufen lassen. :noplan:
 

MacMännchen

Mitglied
Mitglied seit
03.10.2006
Beiträge
2.881
Hi,

ich habe das Skript jetzt noch mal auf einem Mac laufen lassen, und auch dort läuft es fehlerfrei. :)

Vielleicht ist dir beim Kopieren und Hantieren eine Klammer verloren gegangen?

Kleiner Tipp: an deiner Stelle hätte ich mit Null Ahnung von Perl eine andere, komfortablere Lösung gesucht. Es gibt für den Mac bestimmt nette, fertige widgets oder Ähnliches ;)
 

garraty47

Mitglied
Thread Starter
Mitglied seit
18.11.2004
Beiträge
547
komisch, das ist mein originaler code, den ich hier reinkopiert habe.
tststs