#!/usr/bin/perl
use strict; # PERL by Example (2015) p. 77
use warnings; # PERL by Example (2015) p. 85
our $age = 0; # Temporary age for loop-counting and loop-exit.
our @aud = " "; # PERL by Example (2015) p. 17: auditory array
our $cns = 32; # size of AI memory for central nervous system.
our $IQ = 0; # PERL by Example (2015) p. 689
our $msg = " "; # Variable holds a "message" of input from AudInput.
our $pho = ""; # $pho is for a "phoneme" or character of input.
our $t = 0; # Lifetime experiential time "$t"
our $t2s = 0; # auditory text-to-speech index for @aud array
sub AudInput; # PERL by Example p. 351 Forward declaration
sub sensorium; # PERL by Example p. 351 Forward declaration
sub think; # PERL by Example p. 351 Forward declaration
sub VisRecog; # PERL by Example p. 351 Forward declaration
TabulaRasa: { # PERL by Example (2015), p. 204: Labels
my $trc = 0; # $trc variable is "tabula rasa counter".
print "Size of experiential memory is $cns \n"; # Increase as needed.
until ($trc == $cns) { # PERL by Example (2015), p. 193: "Loops".
$aud[$trc] = " "; # Fill CNS memory with blank spaces.
$trc++; # PERL by Example (2015) p. 21: autoincrement $trc.
} # End of loop filling auditory memory with blank engrams.
} # End of TabulaRasa "clean slate" sequence.
EnBoot: { #
http://mind.sourceforge.net/enboot.html
$t = 0; # English Bootstrap sequence stretches over mental time "$t".
print "English bootstrap is loading into memory... \n";
$t = 0; $aud[$t] = "H"; # Indexing of array begins with zero.
$t = 1; $aud[$t] = "E"; # Single elements of array use $aud not @aud.
$t = 2; $aud[$t] = "L"; # PERL by Example (2015), p. 95: Elements
$t = 3; $aud[$t] = "L"; # AudMem() stores new words at higher $t values.
$t = 4; $aud[$t] = "O"; # Bootstrap "HELLO" is not permanently here.
$t = 5; # A blank gap is necessary between words.
$t = 6; # More bootstrap words will be needed.
}; #
http://code.google.com/p/mindforth/wiki/EnBoot
while ($t < $cns) { # PERL by Example (2015), p. 190
$age = $age + 1; # Increment $age variable with each loop.
print "\nMain loop cycle ", $age, " \n"; # Display loop-count.
sensorium(); # PERL by Example p. 350: () empty parameter list
think(); # PERL by Example p. 350: () empty parameter list
if ($age eq 999) { die "Perlmind dies when time = $t \n" }; # safety
} # End of main loop calling
mind.pl Strong AI subroutines
sub sensorium() { # Start sensory input through sensory modalities.
print " Sensorium: Calling AudInput subroutine: \n";
AudInput(); # PERL by Example p. 350: () empty parameter list
# VisRecog(); -- non-existent subroutine is shown but commented out
} # End of sensorium subroutine in Perl artificial intelligence
sub AudInput() { # As if keyboard input were auditory hearing.
print "Enter a word of input, then press RETURN: ";
$msg = <STDIN>; # PERL by Example (2015), p. 50: Filehandle STDIN
print "AudInput: You entered the word: $msg";
AudMem(); # Calling the memory-insertion subroutine
} # End of auditory input for human-computer interaction
sub AudMem() { #
http://mind.sourceforge.net/audstm.html
chop($msg); # PERL by Example (2015), p. 111: chop Function
my $reversed = reverse $msg; # PERL by Example (2015), p. 125: reverse
print "Input word reversed is: $reversed"; # PERL by Example, p. 125
do { # PERL by Example (2015), p. 194: do/until Loops
$pho = chop($reversed); # "chop" returns the chopped character as $pho.
print "\nAudMem: Storing ", $pho, " at time = ", "$t";
$aud[$t] = $pho; # Store the input phoneme in the auditory memory array.
$t++ ; # Increment time $t to store each input character separately.
} until $pho eq ""; # Store the whole word until $pho is empty.
$t++ ; # Add one more time point for a blank engram on-screen.
print "\n"; # Show a new-line gap on-screen.
} #
http://code.google.com/p/mindforth/wiki/AudMem
sub think() { # Start showing output as if generated by thinking.
print "\nThink: "; # Display a new-line before "Think: "
$t2s = 0; # Speak all of $cns memory.
do { # PERL by Example (2015), p. 194: do/until Loops
print $aud[$t2s]; # Show each successive character in memory.
$t2s++ ; # Increment time-to-speech to advance thru memory.
} until $t2s eq $cns; # Show the whole array of AI Mind memory.
print "...comes from auditory memory. \n"; #
} #
http://ai.neocities.org/AiSteps.html