#!/usr/bin/perl
use strict;
use warnings;
{
use Scalar::Util;
use overload
'.' => sub {
my ($self, $value, $swapped) = @_;
die unless Scalar
::Util::looks_like_number($value); $self->{value} = $value;
},
'""' => sub {
return "$self->{value} Celsius"; }
}
sub C # This can be exported by the C module.
{
C->new()
}
my $T;
eval { $T = C
. 25 }; # Dies eval { $T = C
.25
; }; # Dies $T = 25 .C; # Makes a C object with the value 5
IyEvdXNyL2Jpbi9wZXJsCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnBhY2thZ2UgQwp7CiAgICB1c2UgU2NhbGFyOjpVdGlsOwogICAgc3ViIG5ldyB7IGJsZXNzIHt9IH0KICAgIHVzZSBvdmVybG9hZAogICAgICAgICcuJyA9PiBzdWIgewogICAgICAgICAgICBteSAoJHNlbGYsICR2YWx1ZSwgJHN3YXBwZWQpID0gQF87CiAgICAgICAgICAgIGRpZSB1bmxlc3MgJHN3YXBwZWQ7CiAgICAgICAgICAgIGRpZSB1bmxlc3MgU2NhbGFyOjpVdGlsOjpsb29rc19saWtlX251bWJlcigkdmFsdWUpOwogICAgICAgICAgICAkc2VsZi0+e3ZhbHVlfSA9ICR2YWx1ZTsKICAgICAgICAgICAgcmV0dXJuICRzZWxmOwogICAgICAgIH0sCiAgICAgICAgJyIiJyA9PiBzdWIgewogICAgICAgICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgICAgICAgICByZXR1cm4gIiRzZWxmLT57dmFsdWV9IENlbHNpdXMiOwogICAgICAgIH0KfQoKc3ViIEMgIyBUaGlzIGNhbiBiZSBleHBvcnRlZCBieSB0aGUgQyBtb2R1bGUuCnsKICAgIGRpZSBpZiBAXzsKICAgIEMtPm5ldygpIAp9CgpteSAkVDsKZXZhbCB7ICRUID0gQyAuIDI1IH07ICMgRGllcwpldmFsIHsgJFQgPSBDIC4yNTsgfTsgIyBEaWVzCiRUID0gMjUgLkM7ICMgTWFrZXMgYSBDIG9iamVjdCB3aXRoIHRoZSB2YWx1ZSA1CnByaW50ICRUOw==