#!/usr/bin/perl
use strict;
use warnings;

package C
{
    use Scalar::Util;
    sub new { bless {} }
    use overload
        '.' => sub {
            my ($self, $value, $swapped) = @_;
            die unless $swapped;
            die unless Scalar::Util::looks_like_number($value);
            $self->{value} = $value;
            return $self;
        },
        '""' => sub {
            my $self = shift;
            return "$self->{value} Celsius";
        }
}

sub C # This can be exported by the C module.
{
    die if @_;
    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
print $T;