#!/usr/bin/env perl # frequency <=> wavelength calculator while (!$ans || $ans > 2 || $ans =~ m/[a-z]/i) { print "\33[H\33[J". "1) Find frequency given wavelength\n". "2) Find wavelength given frequency\n\n". "Enter your selection: "; chomp($ans = ); } if ($ans == 1) { while (!m/^([0-9.]+)(an|AN|mm|MM|cm|CM|m|M|km|KM|in|IN|ft|FT|mi|MI+)$/) { print "\nan = angstroms\n". "mm = millimeters\n". "cm = centimeters\n". "m = meters\n". "km = kilometers\n". "in = inches\n". "ft = feet\n". "mi = miles\n\n". "Enter the wavelength [value][unit]: "; chomp($_ = ); } if (m/^([0-9.]+)(an|AN|mm|MM|cm|CM|m|M|km|KM|in|IN|ft|FT|mi|MI+)$/) { $wav = $1; $unit = $2; } if ($unit =~ /an/i) { $wavu = "angstroms"; $frq = 2.99793E+18 / $wav; } elsif ($unit =~ /mm/i) { $wavu = "millimeters"; $frq = 2.99793E+11 / $wav; } elsif ($unit =~ /cm/i) { $wavu = "centimeters"; $frq = 2.99793E+10 / $wav; } elsif ($unit eq "m" or $unit eq "M") { $wavu = "meters"; $frq = 2.99793E+08 / $wav; } elsif ($unit =~ /km/i) { $wavu = "kilometers"; $frq = 299793 / $wav; } elsif ($unit =~ /in/i) { $wavu = "inches"; $frq = 1.180285E+10 / $wav; } elsif ($unit =~ /ft/i) { $wavu = "feet"; $frq = 983570840 / $wav; } elsif ($unit =~ /mi/i) { $wavu = "miles"; $frq = 186280 / $wav; } printf "\n\n Frequency : %.9f Hz\n", $frq; printf " : %.6f kHz\n", $frq / 1000; printf " : %.6f MHz\n", $frq / 1000000; printf " : %.6f GHz\n\n", $frq / 1000000000; printf " Wavelength : %s %s\n\n", $wav, $wavu; } elsif ($ans == 2) { while (!m/^([0-9.]+)(k|K|m|M|g|G|h|H+)$/) { print "\nk = kilohertz\n". "m = megahertz\n". "g = gigahertz\n". "h = just hertz\n\n". "Enter the frequency [value][unit]: "; chomp($_ = ); } if (m/^([0-9.]+)(k|K|m|M|g|G|h|H+)$/) { $frq = $1; $unit = $2; } if ($unit =~ /k/i) { $frqu = "kilohertz"; $wav = 2.99793E+15 / $frq; } elsif ($unit =~ /m/i) { $frqu = "megahertz"; $wav = 2.99793E+12 / $frq; } elsif ($unit =~ /g/i) { $frqu = "gigahertz"; $wav = 2.99793E+09 / $frq; } elsif ($unit =~ /h/i) { $frqu = "hertz"; $wav = 2.99793E+18 / $frq; } printf "\n\n Wavelength : %.12f mm\n", $wav / 1E+07; printf " : %.6f cm\n", $wav / 1E+08; printf " : %.6f m\n", $wav / 1E+10; printf " : %.6f km\n", $wav / 1E+13; printf " : %.9f in\n", $wav / 2.54E+08; printf " : %.6f ft\n", $wav / 3.048E+09; printf " : %.6f mi\n\n", $wav / 1.60934E+13; printf " Frequency : %s %s\n\n", $frq, $frqu; }