#!/usr/bin/perl -w # Takes the text file(s) specified on the command line and puts them # into Outlook notes. If you have a Palm pilot and use Chapura's # PocketMirror, then Outlook notes get copied into Palm memos when # you synchronise. use strict; use diagnostics; use Win32::OLE; use Win32::OLE::Const; die "This script is only good for Windows." unless ($^O eq "MSWin32"); my $Outlook; # Generally sunny, and naively optomistic. # Make sure we have Outlook, and that it is running. Chicken out if # either of these is not the case. eval {$Outlook = Win32::OLE->GetActiveObject('Outlook.Application')}; die "Outlook not installed." if $@; die "Outlook needs to be running." unless defined $Outlook; # Outlook OLE constants my $olc = Win32::OLE::Const->Load($Outlook); # We have to expand all wild-cards, because the Windows command shell # doesn't. We only want plain, text files, and we want to read them # whole, not a line at a time. @ARGV = map { glob } @ARGV; @ARGV = grep { -f && -T } @ARGV; undef $/; while (<>) { # New note for each file. my $note = $Outlook->CreateItem($olc->{olNoteItem}); # The Outlook note will consist of the filename followed by the file # contents. # The reason the note is prefixed with the filename is so that Palm # pilot can differentiate between them. If this wasn't done and, for # instance, this script was run on a group of Perl scripts (perl # txt2note.pl *.pl) then when these notes were synched to the Palm, # you would see a whole load of memos on your Palm entitled # "#!/usr/bin/perl -w". $note->{Body} = $ARGV . "\n" . $_; # Optional note properties. $note->{Categories} = "Business"; $note->{Width} = 800; $note->{Height} = 600; $note->{Top} = 20; $note->{Left} = 20; # Close and save note. $note->close($olc->{olSave}); }