#!/usr/bin/env perl # Win32 Perl script launcher # This file is meant to be compiled by PerlApp. It acts like a mini-Perl interpreter. # # Your script's initialization and main loop code should be placed in a function # called __start() in the main package. That function will be called by this # launcher. The reason for this is that otherwise, the perl interpreter will be # in "eval" all the time while running your script. It will break __DIE__ signal # handlers that check for the value of $^S. # # If your script is run by this launcher, the environment variable INTERPRETER is # set. Your script should call __start() manually if this environment variable is not # set. # # example script: # our $quit = 0; # # sub __start { # print "Hello world initialized.\n"; # while (!$quit) { # ... # } # } # # __start() unless defined $ENV{INTERPRETER}; package StarterScript; BEGIN { if ($ENV{BUILDING_WX} == 1 && $^O eq 'MSWin32') { require Wx::Perl::Packager; } elsif ($ENv{BUILDING_WX} == 2 && $^O eq 'MSWin32') { require Tk; } elsif ($ENv{BUILDING_WX} == 3 && $^O eq 'MSWin32') { require Win32::GUI; } } use strict; use Config; if ($^O ne 'MSWin32') { # We are not on Windows, so tell the user about it print "\nThis file is meant to be compiled by PerlApp.\n"; print "To run kore, execute openkore.pl instead.\n\n"; exit 1; } # PerlApp 6's @INC doesn't contain '.', so add it my $hasCurrentDir; foreach (@INC) { if ($_ eq ".") { $hasCurrentDir = 1; last; } } push @INC, "." if (!$hasCurrentDir); if (0) { # Force PerlApp to include the following modules use FindBin; require base; require bytes; require lib; require integer; require warnings; require UNIVERSAL; require Exporter; require Fcntl; require Carp; require Math::Trig; require Text::Wrap; require Text::ParseWords; require Time::HiRes; require IO::Socket::INET; require Getopt::Long; require Digest::MD5; require SelfLoader; require Data::Dumper; require Win32; require Win32::Console; require Win32::Process; require XSTools; require Encode; require Encode::KR; require Encode::TW; require Encode::JP; require Encode::CN; require encoding; require Storable; require Compress::Zlib; # new Perl 5.12 and more require "unicore/lib/Perl/SpacePer.pl"; require "unicore/lib/Perl/Word.pl"; require "unicore/lib/Nt/De.pl"; require "unicore/lib/Gc/Cc.pl"; require "unicore/lib/Blk/ASCII.pl"; # Old Perl 5.10 and less # require "unicore/lib/gc_sc/SpacePer.pl"; # require "unicore/lib/gc_sc/Word.pl"; # require "unicore/lib/gc_sc/Digit.pl"; # require "unicore/lib/gc_sc/Cntrl.pl"; # require "unicore/lib/gc_sc/ASCII.pl"; require HTML::Entities; } if ($PerlApp::TOOL eq "PerlApp") { $ENV{INTERPRETER} = PerlApp::exe(); if (PerlApp::exe() =~ /wxstart\.exe$/i) { $ENV{OPENKORE_DEFAULT_INTERFACE} = 'Wx'; } if (PerlApp::exe() =~ /vxstart\.exe$/i) { $ENV{OPENKORE_DEFAULT_INTERFACE} = 'Vx'; } if (PerlApp::exe() =~ /winguistart\.exe$/i) { $ENV{OPENKORE_DEFAULT_INTERFACE} = 'Win32'; } if (PerlApp::exe() =~ /tkstart\.exe$/i) { $ENV{OPENKORE_DEFAULT_INTERFACE} = 'Tk'; } } else { print "Do not run start.pl directly! If you're using Perl then run openkore.pl instead!\n"; <STDIN>; exit 1; } my $file = "openkore.pl"; if ($ARGV[0] eq '!') { shift; while (@ARGV) { if ($ARGV[0] =~ /^-I(.*)/) { unshift @INC, $1; } else { last; } shift; } $file = shift; } $0 = $file; FindBin::again(); { package main; do $file; } if ($@) { print $@; print "\nPress ENTER to exit.\n"; <STDIN>; exit 1; } elsif (defined $ENV{INTERPRETER}) { main::__start() if defined(&main::__start); }