1package Foo;
2use Class::Std;
3
4sub as_str   : STRINGIFY { return 'foo' }
5sub as_num   : NUMERIFY  { return 42 }
6sub as_bool  : BOOLIFY   { return 1 }
7sub as_hash  : HASHIFY   { return {key=>'value'} }
8sub as_array : ARRAYIFY  { return [99..101] }
9sub as_code  : CODIFY    { sub { return 'code' } }
10sub as_glob  : GLOBIFY   { local *FOO; return \*FOO }
11
12
13package main;
14
15my $obj = Foo->new();
16
17use Smart::Comments;
18
19### "$obj"
20### 0+$obj
21
22my $bool = $obj?"true\n":"false\n";
23### $bool
24
25### $obj->{key}
26
27### $obj->[1]
28
29### $obj->()
30
31### *{$obj}
32