TraceFileReader.pm
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:1k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # Perl package for reading NS trace files
  2. package NS::TraceFileReader;
  3. use 5.005;
  4. use strict;
  5. use warnings;
  6. use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
  7. BEGIN {
  8. use IO::Handle;
  9. use IO::File;
  10. use NS::TraceFileEvent;
  11. use Exporter ();
  12. $VERSION = 1.00;
  13. @ISA = qw(Exporter);
  14. @EXPORT = qw();
  15. %EXPORT_TAGS = ();
  16. @EXPORT_OK = qw();
  17. }
  18. # the constructors:
  19. sub new {
  20. my $self  = shift;
  21. my $class = ref($self) || $self;
  22. my $hash = {};
  23. if (@_) {
  24. $hash->{filehandle} = IO::File->new(shift,"r");
  25. } else {
  26. # default to STDIN
  27. $hash->{filehandle} = IO::Handle->new_from_fd(fileno(STDIN),
  28.       "r");
  29. }
  30. return bless $hash, $class;
  31. }
  32. sub new_from_fd {
  33. my $self = shift;
  34. my $class = ref($self) || $self;
  35. my $hash = {};
  36. if (@_) {
  37. $hash->{filehandle} = IO::Handle->new_from_fd(fileno(shift),
  38.       "r");
  39. } else {
  40. print STDERR "Must supply filehandle to NS::TraceFileReader->new_from_fd($filehandle).n";
  41. }
  42. }
  43. # read and parse a line from the file
  44. sub get_event {
  45. my $self = shift;
  46. my $line = $self->{filehandle}->getline;
  47. if (defined $line) {
  48. return new NS::TraceFileEvent $line;
  49. } else {
  50. return undef;
  51. }
  52. }
  53. # a Perl module must return a true value
  54. 1;