The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

package ss_data ;
use Spreadsheet::Perl ;
use Spreadsheet::Perl::Arithmetic ;

# helper function to compute start data for a cell
sub OneMillion
{
return(1_000_000) ;
}

# Function we want to be available within the spreadsheet
sub AddOne
{
my $ss = shift ;
my $address = shift ;
tie my (%ss), $ss ;

return($ss->Get($address) + 1) ;
}

DefineSpreadsheetFunction('AddOne', \&AddOne) ;

DefineSpreadsheetFunction('Nadim', undef, <<'EOF') ;
sub
{
my $ss = shift ;
my $address = shift ;
tie my (%ss), $ss ;

#return($ss->Sum('A1:A2')) ;
return("Nadim") ;
}
EOF

#-----------------------------------------------------------------
# spreadsheet data, a hash reference
#-----------------------------------------------------------------
{ 

#-----------------------------------------------------------------
# spreadsheet setup
#-----------------------------------------------------------------
# default values will be set, we can override them
AUTOCALC => 0 ,
CACHE => 1 ,
DEBUG =>
	{
	#INLINE_INFORMATION => 1
	} ,
	
ERROR_HANDLER => undef, 

MESSAGE =>
	{
	ERROR => '#error',
	NEED_UPDATE => '#need update'
	},
	
NAME => 'Yasmin',

NAMED_ADDRESSES =>
	{
	FIRST_CELL => 'A1'
	} ,
      
#-----------------------------------------------------------------
# cell data
#-----------------------------------------------------------------
CELLS =>
	{
	A1 => 120, 
	A2 => PerlFormula('$ss->AddOne("A1") + $ss->Sum("A1:B1")'),
	A4 => sub{1},
	A5 => PerlFormula(<<'EOF') ,
# example of a multiline formula
# this is perl code!
my $first_cell_value = $ss{FIRST_CELL} ;

my $modified_value = $first_cell_value + 1 ;

return($modified_value) ;
EOF
	A6 => [123, {Hi => 'THERE'}] ,
	A7 => PF('$ss->Nadim()') ,
	
	B1 => 3,
	
	C2 => "hi there",
	
	D1 => OneMillion()
	}
} ;