#!/usr/bin/perl # Usage: perl numerology.pl [-v] use strict; use warnings; my $verbose = 0; # Parse command line args: foreach my $arg (@ARGV) { $verbose = 1 if $arg eq '-v'; } print "This program calculates Lifepath, Destiny, Soul Urge, and Inner \n", "Dreams numbers.\n\n"; ### Lifepath Number {{{ print "Enter birthdate, MMDDYYYY: "; my $bdate = (); chomp($bdate); my @bdnum = split(//,$bdate); while ($#bdnum) { my $total; foreach my $num (@bdnum) { $total += $num; } print "Calculating.... $total\n" if $verbose; @bdnum = split(//,$total); } my $lifepnum = "@bdnum"; print "\nYour Lifepath number is $lifepnum\n"; ### }}} print "Please enter your FULL BIRTH NAME: "; my $bname = (); chomp $bname; my @names = split(/ /,$bname); # Separate vowels and consanants: my @vowels; my @consonants; foreach my $name (@names) { foreach my $l (split(//,$name)) { if ($l =~ /a|e|i|o|u/i) { push (@vowels,$l); } elsif ($l =~ /w|y/i) { print "Is $l a vowel in $name? "; my $ans = (); chomp($ans); if ($ans =~ /y/i) { push (@vowels,$l); } else { push (@consonants,$l); } } else { # We can assume it's a consonant here push (@consonants,$l); } } } ### Destiny Number {{{ my $total = 0; my @name_nums; foreach my $name (@names) { my @letters = split(//,$name); foreach my $letter (@letters) { my $num = letter_to_num($letter); $total += $num; print "Calculating... $total\n" if $verbose; } my $nnum = simplify_num($total); print "The name $name is $nnum\n"; push (@name_nums,$nnum); $total = 0; } foreach my $number (@name_nums) { $total += $number; } my $destnum = simplify_num($total); print "The Destiny Number is $destnum\n\n"; $total = 0; ### }}} ### Soul Urge (vowels) {{{ foreach my $vowel (@vowels) { $total += letter_to_num($vowel); } my $soulurge = simplify_num($total); print "The Soul Urge Number is $soulurge\n\n"; $total = 0; ### }}} ### Inner Dreams (consonants) {{{ foreach my $con (@consonants) { $total += letter_to_num($con); } my $innerdreams = simplify_num($total); print "The Inner Dreams Number is $innerdreams\n\n"; ### }}} ### Summary {{{ print "To Summarize:\n", "Lifepath: $lifepnum\n", "Destiny: $destnum\n", "Soul Urge: $soulurge\n", "Inner Dreams: $innerdreams\n"; ### }}} sub letter_to_num { # Return a number depending on the letter; # This can probably be simplified with ascii my $l = shift; my $L = $l; $l =~ tr/A-Z/a-z/; $l = ord($l)-7; my $num = ($l % 9) +1; print "Calculating... $L = $num\n" if $verbose; return $num; } sub simplify_num { my @num = split(//,shift); while ($#num) { # Master numbers are 11 and 22 return 11 if "@num" eq '1 1'; return 22 if "@num" eq '2 2'; my $total; foreach my $num (@num) { $total += $num; } print "Calculating.... $total\n" if $verbose; @num = split(//,$total); } return "@num"; }