in reply to Lotus notes, the blessings but not the insight

Back in the day, I wrote Extract Lotus Notes Mail to HTML. I believe you need to actually access properties of your $abst objects instead of trying to use Data::Dumper on them, as these objects are Windows OLE objects and nothing that Perl could see immediately.

Also note diotalevi's comments on how my code should have been written instead, so you get better performance.

Replies are listed 'Best First'.
Re^2: Lotus notes, the blessings but not the insight
by budoka (Initiate) on Aug 12, 2009 at 09:50 UTC
    Thank you for your comment Corion. I tried to take the recommendations into account and ended took two approaches: #1 - using GetItemValue
    use strict; use warnings; use Win32::OLE; use Data::Dumper::Simple; my $Notes = Win32::OLE->new('Notes.NotesSession') or die "Cannot start Lotus Notes Session object.\n"; my $db = $Notes->GetDatabase("server", "c_dir/theDBase.nsf") or die "Could not open database.\n"; my ($Version) = ($Notes->{NotesVersion} =~ /\s*(.*\S)\s*$/); # print "The current user is $Notes->{UserName}.\n"; print "Running Notes \"$Version\" on \"$Notes->{Platform}\".\n\n\n"; my $Count = $db->AllDocuments->Count; print "\nConnected to ", $db->{Title}, " on ", $db->{Server}; print "\nThere are $Count documents in the database.\n"; my $AllDocuments = $db->AllDocuments; my $doc = $AllDocuments->GetFirstDocument; while ( $doc ) { my $NextDoc = $AllDocuments->GetNextDocument($doc); my $abst = $doc->GetItemValue("Abstract"); if ($abst) { warn Dumper($abst); print "abstract = $abst\n"; } $doc = $NextDoc; }
    This yields the following results :
    There are 49765 documents in the database. abstract = ARRAY(0x1a8fd4c) $abst = [ '' ]; abstract = ARRAY(0x1a4b4bc) $abst = [ '' ]; abstract = ARRAY(0x1a8fe4c) $abst = [ '' ]; abstract = ARRAY(0x1a8fddc) $abst = [ '' ]; abstract = ARRAY(0x1a4b45c) $abst = [ '' ]; abstract = ARRAY(0x1a8fe0c) $abst = [ '' ];
    #2 - using GetFirstItem
    my $AllDocuments = $db->AllDocuments; my $doc = $AllDocuments->GetFirstDocument; while ( $doc ) { my $NextDoc = $AllDocuments->GetNextDocument($doc); my $abst = $doc->GetFirstItem("Abstract"); if ($abst) { warn Dumper($abst); print "abstract = $abst\n"; } $doc = $NextDoc; } }
    Which yields the following results :
    There are 49771 documents in the database. $abst = bless( {}, 'Win32::OLE' ); abstract = Win32::OLE=HASH(0x1a4b53c) $abst = bless( {}, 'Win32::OLE' ); abstract = Win32::OLE=HASH(0x1a4b4cc) $abst = bless( {}, 'Win32::OLE' ); abstract = Win32::OLE=HASH(0x1a4b4ec)
    I am close, which Senior monk can give me the final push ?! I cleaned up the thread, for readability's sake. thank you bart,Corion so far for the assistance.
A reply falls below the community's threshold of quality. You may see it by logging in.