note
Anonymous Monk
<code>
(* 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
</code>
1216610
1216610
2