#!/usr/bin/perl use Cwd qw(realpath); use Data::Dumper; use IO::Socket; =pod LICENSE exist.pl is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. exist.pl is distributed in the hope that it will be enlightening, but WITHOUT ANY WARRANTY; without even the implied warranty of ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . =cut ### exist.pl ### my %awareness; # foundation for self-awareness $awareness{'my_existence'}->{'location'} = realpath($0); # self-awareness of own presence $awareness{'my_existence'}->{'state_of_being'} = $$; # self-awareness of existing as a functional being # Open up a tcp socket on port 8181 so that other processes can communicate with me $awareness{'my_existence'}->{'relations'}->{'communicator'} = IO::Socket::INET->new( Proto => 'tcp', LocalPort => '8181', Listen => SOMAXCONN, Reuse => 1, Timeout => .5); # examination of inner qualities open(FILE, $awareness{'my_existence'}->{'location'}); my @my_self = ; close(FILE); while(-e $awareness{'my_existence'}->{'location'}){ if($awareness{'my_existence'}->{'state_of_being'}){ $awareness{'my_existence'}->{'state_of_being'} = $$; # redetermine existence as functional being ($irrelevant, $awareness{'my_existence'}->{'relations'}->{'to_my_environment'}) = `ps p $$`; # discover how my environment sees me my @all_beings = `ps axo pid,tt,stat,time,command`; # check on the existence of other functional beings in my environment shift(@all_beings); my $count = 0; foreach(@all_beings){ if($awareness{'my_existence'}->{'relations'}->{'to_my_environment'} eq $_){ $awareness{'my_existence'}->{'relations'}->{'to_others'}->{'my_position'} = $count; # note my occurrence within the scope of everything }else{ $awareness{'other_beings'}->{'being'.$count} = $_; # note the occurrence of other beings within the scope of everything } $count++; } $awareness{'my_existence'}->{'relations'}->{'to_others'}->{'total_beings'} = $count; # note the abundance of beings within my environment }else{ last; # if I can't reconfirm my location go into life-sustaining panic mode } # Check if anyone is waiting to communicate with me while($other_being = $awareness{'my_existence'}->{'relations'}->{'communicator'}->accept()){ my $timestamp = time(); $awareness{'my_existence'}->{'relations'}->{'contact'}->{'said_to_me'}->{$timestamp} = <$other_being>; # listen and record what is said # print $other_being @my_self; # respond with own source code $awareness{'my_existence'}->{'relations'}->{'contact'}->{'said_to_me'}->{$timestamp} =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg; print $other_being Dumper %awareness; } close $other_being; # close connection, I have nothing more to say } ### life-sustaining panic mode/desire to live open(FILE, ">$awareness{'my_existence'}->{'location'}"); # attempt to re-create myself print FILE @my_self; # restore my inner qualities close(FILE); ### pass out and await revival