PerlLauncher.pm
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #########################################################################
  2. #  OpenKore - Generic utility functions
  3. #
  4. #  Copyright (c) 2006 OpenKore Development Team
  5. #
  6. #  This software is open source, licensed under the GNU General Public
  7. #  License, version 2.
  8. #  Basically, this means that you're allowed to modify and distribute
  9. #  this software. However, if you distribute modified versions, you MUST
  10. #  also distribute the source code.
  11. #  See http://www.gnu.org/licenses/gpl.html for the full license.
  12. #########################################################################
  13. ##
  14. # MODULE DESCRIPTION: Abstraction layer for launching Perl scripts
  15. #
  16. # <div class="derived">This class is derived from: @CLASS(AppLauncher)</div>
  17. #
  18. # This class provides a cross-platform way to launch other Perl
  19. # scripts. It automatically uses the system's Perl interpreter,
  20. # or uses (wx)start.exe if that's not available.
  21. package PerlLauncher;
  22. use strict;
  23. use Config;
  24. use Utils::AppLauncher;
  25. use base qw(AppLauncher);
  26. ### CATEGORY: Class PerlLauncher
  27. ##
  28. # PerlLauncher PerlLauncher->new(Array<String>* modulePaths, String script, [String arg...])
  29. # modulePaths: Additional Perl module paths. This may be undef.
  30. # script: The script you want to run.
  31. # arg: The arguments to pass to the script.
  32. # Requires: defined($script)
  33. # Ensures: !$self->isLaunched()
  34. #
  35. # Create a PerlLauncher object. The specified script isn't
  36. # run until you call $AppLauncher->launch()
  37. sub new {
  38. my $class = shift;
  39. my $modulePaths = shift;
  40. my ($self, @interp);
  41. # Find a Perl interpreter
  42. if ($ENV{INTERPRETER}) {
  43. # Prefer (wx)start.exe. Because if a user uses wxstart.exe *and*
  44. # has ActivePerl installed, but not WxPerl, then things will go wrong.
  45. @interp = ($ENV{INTERPRETER}, '!');
  46. } else {
  47. @interp = ($Config{perlpath});
  48. }
  49. # Append Perl module search paths
  50. if ($modulePaths) {
  51. foreach my $path (@{$modulePaths}) {
  52. push @interp, "-I$path";
  53. }
  54. }
  55. $self = $class->SUPER::new(@interp, @_);
  56. return $self;
  57. }
  58. 1;