(* Demonstration MacOS/OSX app in AppleScript and Perl *) (* Posted to perlmonks.org by Anonymous Monk 6/16/2018 *) (* Node: How to write apps for macOS/OSX in Perl! Part 1: Perl ASN Check (Revised) *) (* Changes: Refactored hard-coded variables and improved comments. *) set TITLE to "Perl ASN Check" set PROMPT to "Autonomous System Number: (Example: 714 is Apple Inc. 666 does not exist. Blank to exit.)" set ASQUERY to "https://freeapi.robtex.com/asquery/" # EVENT LOOP repeat # CONFIG LOOP repeat try # LET USER SET A VARIABLE set ASN to text returned of (display dialog PROMPT with title TITLE default answer "" buttons {"Check"} default button 1) # VERIFY NUMERIC INPUT, OR ELSE: ERROR set ASN to ASN as number # require a number exit repeat # continue if ASN is numeric on error # not a number? # CRITICAL ALERTS HAVE A SCARY ICON display alert "Please enter an Autonomous System Number!" as critical end try # END CONFIG end repeat if ASN is equal to 0 then return # exit if blank # ALL MACS HAVE PERL BABY! # SEND PERL STDOUT TO APPLESCRIPT VARIABLE set RES to do shell script " perl -MHTTP::Tiny -e ' my $r = HTTP::Tiny->new->get(qq~" & ASQUERY & ASN & "~); if (length $r->{content}) { $r->{content} =~ /[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+/ ? print q~ASN (" & ASN & ") Exists!~ : print q~ASN (" & ASN & ") Not Found!~; } else { print q~Download failed! (" & ASQUERY & ")~ } ' " # PRINT PERL STDOUT TO DESKTOP ALERT VIA APPLESCRIPT VAR display alert RES end repeat