#!perl -w # need UnderMethods module, see below # we need to change the view arrangement because of a "feature" # of Mac OS 9! use UnderMethods; use Mac::Glue ':all'; use strict; for (my $f = new Mac::Glue 'Finder') { my($vol, $label, @orig, @prop); $vol = prop('startup disk'); $label = prop('label_index', $vol); @prop = ( prop('position', $vol), prop(spatial_view_arrangement => of => 'desktop'), prop(button_view_arrangement => of => 'desktop'), ); @orig = (get($prop[0]), get($prop[1]), get($prop[2])); activate(); set($prop[2], to => enum('not arranged')); set($prop[1], to => enum('not arranged')); set($prop[0], to => [10, 40]); for my $i (0 .. 2**5) { set($label, to => $i); } set($prop[0], to => $orig[0]); set($prop[1], to => param_type($orig[1], typeEnumerated)); set($prop[2], to => param_type($orig[2], typeEnumerated)); beep(3); } __END__ package UnderMethods; use strict; use overload; use Carp; use vars '$AUTOLOAD'; sub import { no strict 'refs'; *{ caller() . "::AUTOLOAD" } = \&AUTOLOAD; } sub AUTOLOAD { my($ref) = (overload::StrVal($_) =~ /^(?:(.*)\=)?(?:[^=]*)\((?:[^\(]*)\)$/); croak "Undefined subroutine &$AUTOLOAD called" unless $ref; (my $name = $AUTOLOAD) =~ s/.*:://; my $func = $_->can($name); confess "Can't call method `$name' in $ref" unless $func; unshift @_, $_; goto &$func; } 1;