#!/usr/bin/perl use 5.006; use strict; use warnings; package Attribute::Array::Zeroes; use Tie::Array; use base 'Tie::StdArray'; use Attribute::Handlers autotie => { '__CALLER__::ZeroDefault' => 'Attribute::Array::Zeroes' }; sub FETCH { my $return = $_[0]->[$_[1]]; return 0 if not defined $return; $return; } package main; #use Attribute::Array::Zeroes; my @x : ZeroDefault; print "This is zero, not undef: $x[4]\n"; $x[5] = 1; print "This, too: $x[0] and even this: $x[6]. This isn't: $x[5]\n";