• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Nix Voodoo, ehr Wolf im Schafspelz... =)

hubionmac

Tydemans Early Worcester
Registriert
25.06.04
Beiträge
393
Ok, also die richtig intensiven Sachen mache ich mittlerweile nicht mehr in AppleScript, sondern weiche auf perl oder andere Terminal-Anwendungen aus.
Ich sehe AppleScript da als Mittel zum Zweck, man kann schnell und recht einfach kleine Programme schreiben, die mit anderen kommunizieren können.
Wie sollte ich sonst ohne großen Aufwand für ein Perl-Script den Namen des Songs herausbekommen, den iTunes gerade spielt?

Hier mal ein Beispie, ich nenne es:
Perl Code in AppleScript ausführen, eine AppleScript Datei und der ganze Zeitaufwendige Code ist in Perl geschrieben.
Mit AppleScript Seriennummern zu generieren und dabei auch noch sicher zu gehen, dass keine doppelt ist, kann bei 10.000 schon etwas dauern.
mit dem Perl-Einschub nur ein paar Sekunden.
Code:
make_serials(100)

on make_serials(serialcount)
    set sc to "#!/usr/bin/perl

###########################################################
#  sub generate_random_string written by Guy Malachi http://guymal.com
# 18 August, 2002
###########################################################

# This function generates random strings of a given length
sub generate_random_string
{
    my $length_of_randomstring=shift;# the length of 
             # the random string to generate

    my @chars=('a'..'z','A'..'Z','0'..'9','_');
    my $random_string;
    foreach (1..$length_of_randomstring) 
    {
        # rand @chars will generate a random 
        # number between 0 and scalar @chars
        $random_string.=$chars[rand @chars];
    }
    return $random_string;
}

#Generate the random string
$serialcount = " & serialcount & ";
@myserials = ();
$arraycount = 0;
while ($serialcount > $arraycount) {
    my $random_string=&generate_random_string(30);
    $allreadyExists = 0;

    foreach $serial (@serials){
        if ($serial eq $random_string) {
            $allreadyExists = 1;
            last;
        }
    }
    if ($allreadyExists eq 0) {
        push(@myserials, $random_string);
    } else {
        $allreadyExists = 0;
    }
    $arraycount = 0;
    foreach $k (@myserials){
        $arraycount++;
    }
}

foreach $k (@myserials){
    print $k.\"#\";
}
" as text
    
    set the clipboard to sc
    set serials to do shell script "pbpaste | perl"
    set AppleScript's text item delimiters to "#"
    set seriallist to text items 1 through -2 of serials
    set AppleScript's text item delimiters to ""
    return seriallist
end make_serials
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Da ich auch eher ein Perlator als ein AppleScripter bin, habe ich zu dem Thema auch schon was geschrieben. Eine Anwendung davon findest Du z.B. in meinem Passwort Generator AppleScript.

Die allgemeinen Grundlagen kannst Du bei Interesse im AppleScript Forum bei Fischer-Bayern nachlesen.

Damit kannst Du Dir nämlich das Zwischenspeichern im Clipboard sparen.

AppleScript kann man übrigens von Perl aus auch gut mit Mac::Glue, das bei Mac OS X übrigens mitgeliefert wird, ansprechen. Natürlich habe ich auch dazu was verfügbar ;)