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

外挂编程

开发平台:

Windows_Unix

  1. #########################################################################
  2. #  OpenKore - Console Interface Dynamic Loader
  3. #
  4. #  Copyright (c) 2004,2005,2006,2007 OpenKore development team 
  5. #
  6. #  This program is free software; you can redistribute it and/or modify
  7. #  it under the terms of the GNU General Public License as published by
  8. #  the Free Software Foundation; either version 2 of the License, or
  9. #  (at your option) any later version.
  10. #
  11. #  This program is distributed in the hope that it will be useful,
  12. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. #  GNU General Public License for more details.
  15. #########################################################################
  16. ##
  17. # MODULE DESCRIPTION: Console Interface dynamic loader
  18. #
  19. # Loads the apropriate Console Interface for each system at runtime.
  20. # Primarily used to load Interface::Console::Win32 for Windows systems and
  21. # Interface::Console::Unix for Unix systems.
  22. package Interface::Console;
  23. use strict;
  24. use warnings;
  25. use IO::Socket;
  26. use Interface;
  27. use base qw(Interface);
  28. use Modules;
  29. sub new {
  30. # Automatically load the correct module for
  31. # the current operating system
  32. if ($^O eq 'MSWin32') {
  33. eval "use Interface::Console::Win32;";
  34. die $@ if $@;
  35. Modules::register("Interface::Console::Win32");
  36. return new Interface::Console::Win32();
  37. } elsif ($^O eq 'linux' || $^O eq 'darwin') {
  38. my $mod = 'Interface::Console::Unix';
  39. my $str = "use $mod;";
  40. eval ${$str};
  41. die $@ if $@;
  42. Modules::register($mod);
  43. return new Interface::Console::Unix();
  44. } else {
  45. # Other Unix. For some reason Readline doesn't work correctly
  46. # on FreeBSD.
  47. my $mod = 'Interface::Console::Simple';
  48. my $str = "use $mod;";
  49. eval ${$str};
  50. die $@ if $@;
  51. Modules::register($mod);
  52. return new Interface::Console::Simple();
  53. }
  54. }
  55. sub beep {
  56. print STDOUT "a";
  57. STDOUT->flush;
  58. }
  59. 1 #end of module