fork download
  1. use strict;
  2. use warnings;
  3.  
  4. package _Buffer;
  5. use IO::File;
  6.  
  7. sub new { bless [], shift }
  8.  
  9. sub append {
  10. my ($self, $key, $value) = @_;
  11.  
  12. my $message = (defined $value ? "$key: $value\n" : (defined $key ? "$key\n" : "\n"));
  13. push(@{$self}, $message);
  14. return $self;
  15. }
  16.  
  17. sub flush {
  18. my ($self) = @_;
  19.  
  20. $self->append;
  21. STDOUT->printflush(@{$self});
  22. @{$self} = ();
  23. return $self;
  24. }
  25.  
  26. package main;
  27.  
  28. my $buff = _Buffer->new;
  29. $buff->append(event => "message");
  30. $buff->append(data => "fired message event");
  31. $buff->flush;
  32. $buff->append("data: message")->flush;
  33.  
Success #stdin #stdout 0.01s 5164KB
stdin
Standard input is empty
stdout
event: message
data: fired message event

data: message