The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# OLE::Storage_Lite Sample
# Name : smpadd.pl
#  by Kawai, Takanori (Hippo2000) 2000.12.21, 2001.1.4, 2001.3.1
#=================================================================
use strict;
use OLE::Storage_Lite;

#0. prepare test file
	open OUT, ">test.tmp";
	print OUT "1234567890";
	close OUT;

#1. Normal
{
	my $oOl = OLE::Storage_Lite->new('test.xls');
	my $oPps = $oOl->getPpsTree(1);
	die( "test.xls must be a OLE file") unless($oPps);

	my $oF = OLE::Storage_Lite::PPS::File->new(
			    OLE::Storage_Lite::Asc2Ucs('Add Strting Len 5'), 
			'12345');
	my $oF2 = OLE::Storage_Lite::PPS::File->new(
			    OLE::Storage_Lite::Asc2Ucs('Length 0'), 
			'');
	push @{$oPps->{Child}}, $oF;
	push @{$oPps->{Child}}, $oF2;
	$oPps->save('add_test.xls');
}
#2. Tempfile
{
	my $oOl = OLE::Storage_Lite->new('test.xls');
	my $oPps = $oOl->getPpsTree(1);
	die( "test.xls must be a OLE file") unless($oPps);

	my $oF = OLE::Storage_Lite::PPS::File->newFile(
			    OLE::Storage_Lite::Asc2Ucs('Add tempfile Len 6'), 
			);
	my $oF2 = OLE::Storage_Lite::PPS::File->newFile(
			    OLE::Storage_Lite::Asc2Ucs('Length 0'), 
			'');
	$oF->append('123456');
	push @{$oPps->{Child}}, $oF;
	push @{$oPps->{Child}}, $oF2;
	$oPps->save('add_tmp.xls');
}
#3. Filename
{
	my $oOl = OLE::Storage_Lite->new('test.xls');
	my $oPps = $oOl->getPpsTree(1);

	die( "test.xls must be a OLE file") unless($oPps);
	my $oF = OLE::Storage_Lite::PPS::File->newFile(
			    OLE::Storage_Lite::Asc2Ucs('Add filename Len b'), 
			'test.tmp');

	my $oF2 = OLE::Storage_Lite::PPS::File->newFile(
			    OLE::Storage_Lite::Asc2Ucs('Length 0'), 
			'');
	$oF->append('a');
	push @{$oPps->{Child}}, $oF;
	push @{$oPps->{Child}}, $oF2;
	$oPps->save('add_name.xls');
}
#4. IO::File
{
	my $oOl = OLE::Storage_Lite->new('test.xls');
	my $oPps = $oOl->getPpsTree(1);
	die( "test.xls must be a OLE file") unless($oPps);

	my $oFile = new IO::File;
	$oFile->open('test.tmp', 'r+');

	my $oF = OLE::Storage_Lite::PPS::File->newFile(
			    OLE::Storage_Lite::Asc2Ucs('Add IO::File Len c'), 
			$oFile);

	my $oF2 = OLE::Storage_Lite::PPS::File->newFile(
			    OLE::Storage_Lite::Asc2Ucs('Length 0'), 
			'');
	$oF->append('b');
	push @{$oPps->{Child}}, $oF;
	push @{$oPps->{Child}}, $oF2;
	$oPps->save('add_io.xls');
}
#4.1 IO::File(r)
{
	my $oOl = OLE::Storage_Lite->new('test.xls');
	my $oPps = $oOl->getPpsTree(1);
	die( "test.xls must be a OLE file") unless($oPps);

	my $oFile = new IO::File;
	$oFile->open('test.tmp', 'r');

	my $oF = OLE::Storage_Lite::PPS::File->newFile(
			    OLE::Storage_Lite::Asc2Ucs('Add IO2::File Len c'), 
			$oFile);

	my $oF2 = OLE::Storage_Lite::PPS::File->newFile(
			    OLE::Storage_Lite::Asc2Ucs('Length 0'), 
			'');
	$oF->append('b'); #No Work
	push @{$oPps->{Child}}, $oF;
	push @{$oPps->{Child}}, $oF2;
	$oPps->save('add_io2.xls');
}