package Paygrades;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(paygrade);
our @EXPORT_OK = qw(%navy %army %af %usmc);
=historical notes
Some of the paygrades listed below are no longer in use, the statutory
authority for them having expired upon the death of GENA Bradley,
others representing special conferrals on extraordinary commanders,
and one established to ensure the seniority of George Washington to
all United States military personnel, forever. Additionally, the
United States Air Force no longer has Warrant Officers.
The first officer promoted to Fleet Admiral was Leahy, who was
President Roosevelt's Chief of Staff. He was joined by Ernest King
(Chief of Naval Operations), Chester Nimitz (CinC, Pacific Ocean
Areas) and William Halsey (COM7THFLT).
The first officer promoted to General of the Army was George Marshall
(Chief of Staff of the Army) joined by Douglas MacArthur (CinC,
Southwest Pacific), Dwight Eisenhower (Supreme Commander, Allied
Forces Europe) and Omar Bradley (US Army Europe).
The only General of the Air Force to date was Harold 'Hap' Arnold,
Chief of Staff, Army Air Forces.
Admiral of the Navy was conferred on George Dewey for the victory at
Manila Bay in the Spanish American War.
General of the Armies was conferred on John 'Blackjack' Pershing for
his command of the American Expeditionary Force during World War I. It
is said that George Marshall was very apprehensive about being
promoted to five stars, for fear of offending him.
George Washington is sui generis, and the perpetual General of the
Armies of the United States of America.
=cut
%navy = ( 'E-1' => 'Seaman',
'E-2' => 'Seaman',
'E-3' => 'Seaman',
'E-4' => 'Petty Officer',
'E-5' => 'Petty Officer',
'E-6' => 'Petty Officer',
'E-7' => 'Chief',
'E-8' => 'Senior Chief',
'E-9' => 'Master Chief',
'W-1' => 'Warrant Officer',
'W-2' => 'Chief Warrant Officer',
'W-3' => 'Chief Warrant Officer',
'W-4' => 'Chief Warrant Officer',
'W-5' => 'Chief Warrant Officer',
'O-1' => 'Ensign',
'O-2' => 'Lieutenant (j.g.)',
'O-3' => 'Lieutenant',
'O-4' => 'Lieutenant Commander',
'O-5' => 'Commander',
'O-6' => 'Captain',
'O-7' => 'Admiral',
'O-8' => 'Admiral',
'O-9' => 'Admiral',
'O-10' => 'Admiral',
'O-11' => 'Fleet Admiral',
'O-12' => 'Admiral of the Navy');
%usmc = ( 'E-1' => 'Private',
'E-2' => 'PFC',
'E-3' => 'Lance Corporal',
'E-4' => 'Corporal',
'E-5' => 'Sergeant',
'E-6' => 'Staff Sergeant',
'E-7' => 'Gunny',
'E-8' => 'Master Sergeant',
'E-9' => 'Master Guns',
'W-1' => 'Gunner',
'W-2' => 'Gunner',
'W-3' => 'Gunner',
'W-4' => 'Gunner',
'W-5' => 'Gunner',
'O-1' => 'Lieutenant',
'O-2' => 'Lieutenant',
'O-3' => 'Captain',
'O-4' => 'Major',
'O-5' => 'Lieutenant Colonel',
'O-6' => 'Colonel',
'O-7' => 'General',
'O-8' => 'General',
'O-9' => 'General',
'O-10' => 'General');
%army = ( 'E-1' => 'Private',
'E-2' => 'Private',
'E-3' => 'PFC',
'E-4' => 'Corporal',
'E-5' => 'Sergeant',
'E-6' => 'Staff Sergeant',
'E-7' => 'Sergeant',
'E-8' => 'Master Sergeant',
'E-9' => 'Sergeant Major',
'W-1' => 'Chief',
'W-2' => 'Chief',
'W-3' => 'Chief',
'W-4' => 'Chief',
'W-5' => 'Chief',
'O-1' => 'Lieutenant',
'O-2' => 'Lieutenant',
'O-3' => 'Captain',
'O-4' => 'Major',
'O-5' => 'Lieutenant Colonel',
'O-6' => 'Colonel',
'O-7' => 'General',
'O-8' => 'General',
'O-9' => 'General',
'O-10' => 'General',
'O-11' => 'General of the Army',
'O-12' => 'General of the Armies',
'O-13' => 'General of the Armies of the United States of America');
%usaf = ( 'E-1' => 'Airman',
'E-2' => 'Airman',
'E-3' => 'Senior Airman',
'E-4' => 'Sergeant',
'E-5' => 'Staff Sergeant',
'E-6' => 'Tech Sergeant',
'E-7' => 'Master Sergeant',
'E-8' => 'Senior Master Sergeant',
'E-9' => 'Chief Master Sergeant',
'W-1' => '',
'W-2' => '',
'W-3' => '',
'W-4' => '',
'W-5' => '',
'O-1' => 'Lieutenant',
'O-2' => 'Lieutenant',
'O-3' => 'Captain',
'O-4' => 'Major',
'O-5' => 'Lieutenant Colonel',
'O-6' => 'Colonel',
'O-7' => 'General',
'O-8' => 'General',
'O-9' => 'General',
'O-10' => 'General',
'O-11' => 'General of the Air Force');
sub paygrade {
my ($title, $domain) = @_;
my $paygrade;
unless ($title =~ /(^W)|(^O)|(^E)/) {
return $title;
# print $title;
}
$domain = uc($domain);
if ($domain =~ /NAVY/) {
$paygrade = $navy{$title};
}
elsif ($domain =~ /USCG/) {
$paygrade = $navy{$title};
}
elsif ($domain =~ /USMC/) {
$paygrade = $usmc{$title};
}
elsif ($domain =~ /AF\.MIL/) {
$paygrade = $usaf{$title};
}
elsif ($domain =~ /ARMY/) {
$paygrade = $army{$title};
}
else {
$paygrade = "$army{$title}/$navy{$title}";
}
#print $paygrade;
return $paygrade;
}
2006-06-02 [id://340870|Retitled] by [planetscape], as per Monastery [id://341118|guidelines]
Original title: 'Paygrades'
E-3 => 'Private First Class' E-4 => 'Specialist' or 'Corporal' E-7 => 'Sergeant First Class' E-8 => 'Master Sergeant' or 'First Sergeant' E-9 => 'Sergeant Major' or 'Command Sergeant Major' and exactly 1 'Sergeant Major Of The Army' W-1 => 'Warrant Officer' W-2..W-5 => 'Chief Warrant Officer' 'O-1' => 'Second Lieutenant', 'O-2' => 'First Lieutenant', 'O-7' => 'Brigadier General', 'O-8' => 'Major General', 'O-9' => 'Lieutenant General', 'O-11' => 'General of the Army' (reserved for wartime only) 'O-12' => DOES NOT EXIST 'O-13' => DOES NOT EXISTSee [http://www.defenselink.mil/specials/insignias|this] for an authoratative source across the entire DoD.
Cheers - [Limbic~Region|L~R]
Corrected 1/2 Lieutenant per [ptum]. We had much more descriptive names for them when I was in ;-)
Ummm, actually, O-1 is a 2nd Lieutenant (or "Butter Bar") and O-2 is a First Lieutenant.
Update: Ah, I see you corrected it. :)
The paygrades of O-12 and O-13 don't really exist in DOPMA. They are there to deal with the unique cases of Pershing and Washington, per the historical notes.
How one would use this module to specifically write mail in response to a web form submitted by one those individuals, or specifically by the CSMA, is a good question that I will address in 1.1. :-)
%usaf = ( 'E-1' => 'Airman Basic',
'E-2' => 'Airman',
'E-3' => 'Airman First Class',
'E-4' => 'Senior Airman',
'E-5' => 'Staff Sergeant',
'E-6' => 'Technichal Sergeant',
'E-7' => 'Master Sergeant',
'E-8' => 'Senior Master Sergeant',
'E-9' => 'Chief Master Sergeant',
'W-1' => '',
'W-2' => '',
'W-3' => '',
'W-4' => '',
'W-5' => '',
'O-1' => 'Lieutenant',
'O-2' => 'Lieutenant',
'O-3' => 'Captain',
'O-4' => 'Major',
'O-5' => 'Lieutenant Colonel',
'O-6' => 'Colonel',
'O-7' => 'General',
'O-8' => 'General',
'O-9' => 'General',
'O-10' => 'General',
'O-11' => 'General of the Air Force');
In addition to corrections by Limbic~Region, et. al., here are a few more, from the perspective of the US Army:
Personally, I never made it beyond E-5 (Sergeant) but my brother recently pinned on his Colonel (O-6) eagles! A good day for him. :)
But is an E-1 actually addressed as Private Recruit?
Not necessarily, but it has been a while since I was in the Army. Sometimes a lower-ranked person in a class of ranks will be referred to by the class name -- so you might call an E-1 a 'Private' out of courtesy. Similarly, you'll see 2nd Lieutenants (2LT) referred to simply as 'Lieutenant' and even Lieutenant Colonels (LTC) referred to as 'Colonel'.
Looking at the DOD rank page, it seems as though the term 'Recruit' has been dropped for the Army (although it is still there for the Navy, and an E-1 is a 'Private' while an E-2 is a 'Private E-2'. I guess I have to move with the times. :)
Just a word of warning you may want to add. It is technically possible to be one level higher (or even lower) in rank than the actual pay grade.
An example of being a higher rank than pay grade... the position you reside in allows for an E-4 paygrade but you transfer into the unit as a Sgt. (army) - they can only pay you as an E-4. This isn't uncommon in the Army National Guard where the funding is typically controlled by the state (unless mobilized by the federal gov).
An example of being a lower rank than pay grade... you were demoted for some reason (e.g. Article 15). While most demotions also include pay grade reduction, it doesn't always occur. Another is if you transition from one branch of the military to another - but this is rare.
point is that the mapping of pay grade to rank is not always an accurate way of determining rank.
No one has seen what you have seen, and until that happens, we're all going to think that you're nuts. - Jack O'Neil, Stargate SG-1
There is also the practice of 'frocking' an officer who is assigned to a position that requires a higher rank (there are a number of reasons this might be so), but who has not yet been promoted to that rank. Officers who are selected for promotion still have to 'wait their turn' according to their seniority, so that two people promoted by the same board will not flip-flop in terms of seniority. There can be a waiting period (as long as a year) while an officer may be 'Promotable' yet not yet actually promoted (or receiving the pay for their new rank). During that time frame, they are entitled to add a (P) after their current rank (e.g., 'MAJ (P)'). They may also be assigned to a position requiring the higher rank (and thus, tying back to my first point, need to be 'frocked').
This module writes the letter for the grade the guy picked from the picklist.
Agreed :) Just thought you might like to add an "fyi" to the comments stating it
No one has seen what you have seen, and until that happens, we're all going to think that you're nuts. - Jack O'Neil, Stargate SG-1
:-)
perlmonks.org content © perlmonks.org and girarde, jfroebe, Limbic~Region, ptum, TStanley, zentara
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03