Commit | Line | Data |
be334002 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Moose::Autobox; |
7 | |
8 | { |
9 | package Units::Bytes; |
10 | use Moose::Role; |
11 | use Moose::Autobox; |
12 | |
13 | sub bytes { $_[0] } |
14 | sub kilobytes { $_[0] * 1024 } |
15 | sub megabytes { $_[0] * 1024->kilobytes } |
16 | sub gigabytes { $_[0] * 1024->megabytes } |
17 | sub terabytes { $_[0] * 1024->gigabytes } |
18 | |
19 | { |
20 | no warnings 'once'; # << squelch the stupid "used only once, maybe typo" warnings |
21 | *byte = \&bytes; |
22 | *kilobyte = \&kilobytes; |
23 | *megabyte = \&megabytes; |
24 | *gigabyte = \&gigabytes; |
25 | *terabyte = \&terabytes; |
26 | } |
27 | } |
28 | |
244bd352 |
29 | Moose::Autobox->mixin_additional_role(SCALAR => 'Units::Bytes'); |
be334002 |
30 | |
31 | $\ = "\n"; |
32 | |
33 | print "5 kilobytes are " . 5->kilobytes . " bytes"; |
34 | print "2 megabytes are " . 2->megabytes . " bytes"; |
35 | print "1 gigabyte is " . 1->gigabyte . " bytes"; |
36 | print "2 terabyes are " . 2->terabytes . " bytes"; |
37 | |