You've seen and used some of the built-in system functions, such as chomp, reverse, and print. But, as other languages do, Perl has the ability to make subroutines, which are user-defined functions.[*] These let us recycle one chunk of code many times in one program. The name of a subroutine is another Perl identifier (letters, digits, and underscores, but it cant start with a digit) occasionally with an optional ampersand (&) in front. There's a rule about when you can omit the ampersand and when you cannot; you'll see that rule by the end of the chapter. For now, we'll use it every time it's allowed, which is always a safe rule. We'll tell you every place where it's forbidden, of course.
The subroutine name comes from a separate namespace, so Perl won't be confused if you have a subroutine called &fred and a scalar called $fred in the same program, though there's no reason to do that under normal circumstances.