Perl reverse Function
last modified April 4, 2025
The Perl reverse function reverses the order of elements in a list
or the characters in a string. Its behavior depends on the context in which
it's used.
In list context, reverse reverses the order of list elements. In
scalar context with a string, it reverses the character order. It doesn't
modify the original data.
Basic String Reversal
The simplest use of reverse is to reverse a string in scalar
context.
#!/usr/bin/perl use strict; use warnings; use v5.34.0; my $text = "Hello World"; my $reversed = reverse $text; print "Original: $text\n"; print "Reversed: $reversed\n";
This example shows string reversal in scalar context. The reverse
function returns a new string with characters in reverse order.
$ ./string_reverse.pl Original: Hello World Reversed: dlroW olleH
List Reversal
In list context, reverse reverses the order of elements.
#!/usr/bin/perl use strict; use warnings; use v5.34.0; my @numbers = (1..5); my @reversed = reverse @numbers; print "Original: @numbers\n"; print "Reversed: @reversed\n";
This demonstrates list reversal. The function returns a new array with elements in reverse order, leaving the original array unchanged.
$ ./list_reverse.pl Original: 1 2 3 4 5 Reversed: 5 4 3 2 1
Reversing a String in List Context
The behavior changes when using reverse on a string in list
context.
#!/usr/bin/perl use strict; use warnings; use v5.34.0; my $text = "Hello"; my @chars = reverse $text; print "Original: $text\n"; print "Reversed as list: @chars\n";
In list context, the string is treated as a list of characters. The function returns the reversed list, not a reversed string.
$ ./string_list_context.pl Original: Hello Reversed as list: o l l e H
Reversing Hash Keys
reverse can help process hash keys in reverse order.
#!/usr/bin/perl
use strict;
use warnings;
use v5.34.0;
my %fruit = (
apple => 3,
banana => 7,
cherry => 2
);
my @reversed_keys = reverse keys %fruit;
print "Original order: ", join(', ', keys %fruit), "\n";
print "Reversed order: ", join(', ', @reversed_keys), "\n";
This example reverses the order of hash keys. Note that hash key order is normally arbitrary in Perl.
$ ./hash_reverse.pl Original order: banana, apple, cherry Reversed order: cherry, apple, banana
Combining with Other Functions
reverse is often combined with other list operations.
#!/usr/bin/perl use strict; use warnings; use v5.34.0; my @words = qw(apple banana cherry date elderberry); my @sorted_reversed = reverse sort @words; print "Original: @words\n"; print "Sorted and reversed: @sorted_reversed\n";
Here we first sort the list alphabetically, then reverse the sorted order.
This shows how reverse can be part of a processing pipeline.
$ ./combined.pl Original: apple banana cherry date elderberry Sorted and reversed: elderberry date cherry banana apple
Reversing Lines from a File
reverse can process file contents in reverse order.
#!/usr/bin/perl use strict; use warnings; use v5.34.0; open(my $fh, '<', 'data.txt') or die "Can't open file: $!"; my @lines = <$fh>; close($fh); my @reversed_lines = reverse @lines; print "Original first line: $lines[0]"; print "Reversed first line: $reversed_lines[0]";
This script reads a file into an array, then reverses the line order. The last line becomes first, and vice versa.
Creating a Palindrome Checker
reverse can help identify palindromic strings.
#!/usr/bin/perl
use strict;
use warnings;
use v5.34.0;
sub is_palindrome {
my $word = lc shift;
$word =~ s/\W//g; # Remove non-word characters
return $word eq reverse $word;
}
print "Enter a word: ";
my $input = <STDIN>;
chomp $input;
if (is_palindrome($input)) {
print "'$input' is a palindrome\n";
} else {
print "'$input' is not a palindrome\n";
}
This example checks if a word reads the same forwards and backwards. We clean the input first to handle punctuation and case sensitivity.
$ ./palindrome.pl Enter a word: Racecar 'Racecar' is a palindrome
Best Practices
- Context awareness: Remember scalar vs list context differences.
- Original unchanged: reverse returns new data, doesn't modify original.
- Combine with join: Use join to convert reversed lists back to strings.
- Efficiency: Avoid unnecessary reversals in large data processing.
Source
This tutorial covered Perl's reverse function with practical
examples demonstrating its usage with strings, lists, and files.
Author
List all Perl tutorials.