doofe frage zu perl script das net läuft

G

garraty47

Aktives Mitglied
Thread Starter
Dabei seit
18.11.2004
Beiträge
547
Reaktionspunkte
5
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:
Seit wann ist PEARL direkt im OS ausührbar? Wäre mir neu.
 
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.
 
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?
 
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?
 
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:
 
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 ;)
 
komisch, das ist mein originaler code, den ich hier reinkopiert habe.
tststs
 
Zurück
Oben Unten