My script uses POE.  I got a working exe using pp once, but cannot
repeat the feat.  I now get the error as follows;

C:\rt>pp rt-1.pl

C:\rt>a
*
* POE can't use POE::Loop::Select:
* Can't locate POE/Loop/Select.pm in @INC (@INC contains: CODE(0xf2bdf4)
C:\DOCUME~1\
ADMINI~1\LOCALS~1\Temp\par-jpolache\cache-1e83eeb4971826dbf1b64a9f8237a3f22
8eec973\inc\lib
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\par-jpolache\cache-1e83eeb497
1826dbf1b64a9f8237a3f228eec973\inc CODE(0xe44034) CODE(0xe4416c)) at
(eval 35) line 3.

*
BEGIN failed--compilation aborted at (eval 34) line 1.
Can't locate POE/Session.pm in @INC (@INC contains: CODE(0xf2bdf4)
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\par-jpolache\
cache-1e83eeb4971826dbf1b64a9f8237a3f228eec973\inc\lib
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\par-jpolache\cache-1e83eeb4971826db
f1b64a9f8237a3f228eec973\inc CODE(0xe44034) CODE(0xe4416c)) at (eval 36)
line 1.

BEGIN failed--compilation aborted at (eval 36) line 1.
could not import qw(Kernel Session) at script/rt-1.pl line 9
BEGIN failed--compilation aborted at script/rt-1.pl line 9.

Any help would be much appreciated.

*** the code is as follows ***

$|++;

use Config::Simple;
use Time::HiRes qw( sleep );
use Win32::SoundRec;
use Win32::Sound;
use Speech::Synthesis;
use Tk;
use POE;
use POE::Resource::Aliases;
use POE::Resource::Events;
use POE::Resource::Extrefs;
use POE::Resource::FileHandles;
use POE::Resource::SIDs;
use POE::Resource::Sessions;
use POE::Resource::Signals;
use POE::Resource::Statistics;


my @lesson_arr;

#$Data::Dumper::Terse;
my $cfg = new Config::Simple('rt.ini') or die "$!";

my $title = $cfg->param('titles.main');

my $lesson_hash_ref = $cfg->get_block('lessons');

for my $line (sort keys %{$lesson_hash_ref}){
        push @lesson_arr, $lesson_hash_ref->{$line};
}

my %ssi_params = (  engine   => 'SAPI4',
  language => 'en_US',
  voice    => "c77c5170-2867-11d0-847B-444553540000",
  async    => 0
);

my $ssi = Speech::Synthesis->new( %ssi_params );

my %sst_params = (  engine   => 'SAPI4',
  language => 'en_US',
  voice    => "4f5091d4-757c-11d1-8FFA-006097B010E2",
  async    => 0
);

my $sst = Speech::Synthesis->new( %sst_params );

1;

POE::Session->create
         ( inline_states => {
                _start => \&ui_start,
                pause => \&ui_pause, # pause function
                intro => \&ui_intro, # green button start, red button demo
                learn => \&ui_learn, # speak sentence to subject
                demo  => \&ui_demo, # demo program
                ispeak => \&ui_ispeak,   # instruction voice function
                tspeak => \&ui_tspeak,   # text voice function
                record_speak => \&ui_recordspeak,        # record subject 
reciting function
                record_read => \&ui_recordread,  # record subject reading out 
loud function
                s_play => \&ui_splay,    # spoken sentence play back function
                r_play => \&ui_rplay,    # red sentence play back function
                dsp_text => \&ui_dsptext, # display text and read out loud
                play_spk => \&ui_playspk,
                play_read => \&ui_playread,      # play
                next_l => \&next_l # increment lesson counter and configure 
buttons
        }
);


sub ui_start {
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];

        $heap->{lesson_ctr} = 0;
        
        #my $app_title = $poe_main_window->Label( -text => $title, -font =>
['arial', '36', 'bold'])->pack;

        $heap->{app_label} = $poe_main_window->Label( -textvariable =>
\$heap->{lesson_lbl},
        -font => ['arial', '24', 'bold'],
        -borderwidth => 5,
        -justify => 'center',
        -relief => 'raised' )->pack(
        #-after => $app_title,
        -fill =>"x",
        -expand => 1
        );

        $heap->{gb} = $poe_main_window->Button( -command =>
$session->postback("learn"),
        -background => "green",
        -activebackground => "green",
        -borderwidth => 5 )->pack(
        -after => $heap->{app_label},
        -padx => 5,
        -pady => 5,
        -ipadx => 75,
        -ipady =>  75,
        -side => 'left',
        -fill =>"x",
        -expand => 1
        );

        $heap->{rb} = $poe_main_window->Button(  -command =>
$session->postback("demo"),
        -background => "red",
        -activebackground => "red",
        -borderwidth => 5 )->pack(
        -padx => 5,
        -pady => 5,
        -ipadx => 75,
        -ipady =>  75,
        -side => 'left',
        -fill =>"x",
        -expand => 1);

        $heap->{bb} = $poe_main_window->Button(
        -background => "blue1",
        -activebackground => "blue1",
        -borderwidth => 5 )->pack(
        -padx => 5,
        -pady => 5,
        -ipadx => 75,
        -ipady =>  75,
        -side => 'left',
        -fill =>"x",
        -expand => 1);

        $kernel->delay( "intro", .5);      
        1;
}

sub ui_pause { # pause function
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];
        sleep($_[ARG0]);
}

sub ui_demo { # demo
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];
        $heap->{wl} = 0;
        print "demo\n";
}

sub ui_intro { # "welcome", "green button start, red button demo"
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];
        $kernel->yield("pause", 1);
        $kernel->yield( "ispeak", ($cfg->param('prompts.welcome')));
        $kernel->yield("pause", 1);
        $kernel->yield("ispeak", ($cfg->param('prompts.inst1')));
        $kernel->yield("pause", 3);
        $kernel->yield("ispeak", ($cfg->param('prompts.inst2')));
}


sub ui_learn { # speak sentence to subject
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ]; 
        $_[HEAP]->{gb}->configure( -command => 
$session->postback("record_speak"));
        $_[HEAP]->{rb}->configure( -command => $session->postback("learn"));
        $kernel->yield("ispeak", $cfg->param('prompts.inst3'));
        $kernel->yield("pause", 3);
        $kernel->yield("tspeak", $lesson_arr[$_[HEAP]->{lesson_ctr}]);
        $kernel->yield("pause", 3);
        $kernel->yield("ispeak", $cfg->param('prompts.inst4'));
        $kernel->yield("pause", 3);
        $kernel->yield("ispeak", $cfg->param('prompts.inst5'));
        $kernel->yield("pause", .5);
        $kernel->yield("ispeak", $cfg->param('prompts.inst6'));
        $kernel->yield("pause", 1);
}

sub ui_ispeak { # instruction voice function
        1;
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ]; 
        $ssi->speak($_[ARG0]);
}

sub ui_tspeak { # text voice function
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        $sst->speak($_[ARG0]);
}


sub ui_recordspeak { # record subject reciting function
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        $_[HEAP]->{spk} =  Win32::SoundRec->new();
        # start recording...
        $_[HEAP]->{gb}->configure( -command => $session->postback("play_spk"));
        $_[HEAP]->{rb}->configure( -command => 
$session->postback("record_read"));
        unlink('speak.wav');
        $_[HEAP]->{spk}->record();
}

# play back spoken sentence
sub ui_playspk {
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        $kernel->yield("pause", 2);
        $_[HEAP]->{spk}->stop();  
        $_[HEAP]->{spk}->save('speak.wav');
        $_[HEAP]->{gb}->configure( -command => $session->postback("dsp_text"));
        $_[HEAP]->{bb}->configure( -command => $session->postback("play_spk"));
        $_[HEAP]->{rb}->configure( -command => 
$session->postback("record_speak"));
        $kernel->yield("pause", 1);        
        $kernel->yield("ispeak", $cfg->param('prompts.inst8'));
        $kernel->yield("pause", 4);        
        $kernel->yield("s_play");
        $kernel->yield("pause", 2);        
        $kernel->yield("ispeak", $cfg->param('prompts.inst9'));
        $kernel->yield("pause", 2);
        $kernel->yield("ispeak", $cfg->param('prompts.inst10'));
        $kernel->yield("pause", 1);
        $kernel->yield("ispeak", $cfg->param('prompts.inst11'));
}

sub ui_splay { # spoken sentence play back function
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        Win32::Sound::Play('speak.wav');
}

sub ui_rplay { # spoken sentence play back function
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        Win32::Sound::Play('read.wav');
}

sub ui_dsptext { # display text and read out loud
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        $_[HEAP]->{gb}->configure( -command => 
$session->postback("record_read"));
        $_[HEAP]->{rb}->configure( -command => $session->postback("dsp_text"));
        $_[HEAP]->{lesson_lbl} = $lesson_arr[$_[HEAP]->{lesson_ctr}];
        $kernel->yield("pause", 1);
        $kernel->yield("ispeak", $cfg->param('prompts.inst12'));
        $kernel->yield("pause", 6);
        $kernel->yield("tspeak", $lesson_arr[$_[HEAP]->{lesson_ctr}]);
        $kernel->yield("pause", 1.5);
        $kernel->yield("ispeak", $cfg->param('prompts.inst13'));
        $kernel->yield("pause", 2);
        $kernel->yield("ispeak", $cfg->param('prompts.inst14'));        
}

sub ui_recordread {     # record subject reading out loud function
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        $_[HEAP]->{rd} =  Win32::SoundRec->new();
        # start recording...
        $_[HEAP]->{gb}->configure( -command => $session->postback("play_read"));
        $_[HEAP]->{rb}->configure( -command => $session->postback(""));
        unlink('read.wav');
        $_[HEAP]->{rd}->record();
}

sub ui_playread {
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        $kernel->yield("pause", 2);
        $_[HEAP]->{rd}->stop();   
        $_[HEAP]->{rd}->save('read.wav');
        $_[HEAP]->{gb}->configure( -command => $session->postback("next_l"));
        $_[HEAP]->{bb}->configure( -command => $session->postback("play_read"));
        $kernel->yield("pause", 1);        
        $kernel->yield("ispeak", $cfg->param('prompts.inst15'));
        $kernel->yield("pause", 4);        
        $kernel->yield("ispeak", $cfg->param('prompts.inst16'));
        $kernel->yield("pause", 4);
        $kernel->yield("s_play");
        $kernel->yield("pause", 4);        
        $kernel->yield("ispeak", $cfg->param('prompts.inst17'));
        $kernel->yield("pause", 4);        
        $kernel->yield("r_play");
        $kernel->yield("pause", 6);        
        $kernel->yield("ispeak", $cfg->param('prompts.inst18'));
        $kernel->yield("pause", 2);
        $kernel->yield("ispeak", $cfg->param('prompts.inst19'));
        $kernel->yield("pause", 1);
        $kernel->yield("ispeak", $cfg->param('prompts.inst20'));
        $kernel->yield("pause", 1);
        $kernel->yield("ispeak", $cfg->param('prompts.inst21'));
}

sub next_l {
        my ( $kernel, $session, $heap ) =  @_[ KERNEL, SESSION, HEAP ];         
        $heap->{lesson_ctr}++;
        $_[HEAP]->{lesson_lbl} = "";
        &ui_learn;
}       

$poe_kernel->run();
exit 0;

I am using Activeperl;

c:\>perl -v

This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 50 registered patches, see perl -V for more detail)

Binary build 820 [274739] provided by ActiveState Built Jan 23 2007 15:57:46




Reply via email to