Util.pm 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # ex:ts=8 sw=4:
  2. # $OpenBSD: Util.pm,v 1.6 2015/04/16 15:49:29 espie Exp $
  3. #
  4. # Copyright (c) 2010-2013 Marc Espie <espie@openbsd.org>
  5. #
  6. # Permission to use, copy, modify, and distribute this software for any
  7. # purpose with or without fee is hereby granted, provided that the above
  8. # copyright notice and this permission notice appear in all copies.
  9. #
  10. # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  11. # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  12. # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  13. # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  14. # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  15. # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  16. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  17. use strict;
  18. use warnings;
  19. use feature qw(say);
  20. package DPB::Util;
  21. sub make_hot
  22. {
  23. my ($self, $fh) = @_;
  24. my $oldfh = select($fh);
  25. $| = 1;
  26. select($oldfh);
  27. return $fh;
  28. }
  29. sub safe_join
  30. {
  31. my ($self, $sep, @l) = @_;
  32. $_ //= "undef" for @l;
  33. return join($sep, @l);
  34. }
  35. my @name =qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
  36. sub time2string
  37. {
  38. my ($self, $time) = @_;
  39. my ($sec, $min, $hour, $mday, $mon) = (localtime $time)[0 .. 4];
  40. return sprintf("%d %s %02d:%02d:%02d", $mday, $name[$mon],
  41. $hour, $min, $sec);
  42. }
  43. sub die_bang
  44. {
  45. my ($class, $msg) = @_;
  46. $class->die("$msg: $!", @_);
  47. }
  48. sub die
  49. {
  50. my ($class, $msg) = @_;
  51. if (@_ > 0) {
  52. require Data::Dumper;
  53. say STDERR Data::Dumper::Dumper(@_);
  54. }
  55. $DB::single = 1;
  56. CORE::die("$msg\n");
  57. }
  58. 1