Perl Programming – Bubble Sort a String
After getting familiar with the syntax of a language, performing little challenges - such as sorting a list of items - is often the next thing one might try. So, although I'd previously lots of Perl experience, having focused on other things for a while I was decidedly rusty, and decided to reactivate my Perl braincells, and write a little program to bubble sort a string in Perl.
So, there are no doubt many ways to do something like this and, in Perl especially, there are many ways to write super-succinct code. With that in mind, this code is definitely not the shortest or most efficient (and bubble-sorts are rather inefficient to begin with!), but hopefully it is quite readable and easy to follow. A project for yourself would be to see how you can improve it.
#!/usr/bin/perl # Bubble-sort a string in Perl use strict; use warnings; my $string = "zjeifopwdjqeqw"; print "$string\n"; for (my $z=0; $z<length($string); $z++) { my $temp1=''; my $temp2=''; for (my $i=0; $i<length($string); $i++) { if ( ord(substr($string,$i+1)) >= ord(substr($string,$i,1)) ) { next; } else { $temp1=substr($string,$i,1); $temp2=substr($string,$i+1,1); substr($string,$i+1,1)=$temp1; substr($string,$i,1) = $temp2; } } } print "$string\n"; exit;
Which, with the string provided, will print this:
$ perl bubble.pl zjeifopwdjqeqw deefijjopqqwwz
I hope you'll have fun playing around with the code, and making even better versions. Bubble-sorting can be useful on occasion, although in this case it was just a little program to shake some dust off the braincells.
If you really wanted to just reverse a string in Perl, then you could simply use the reverse keyword, per the example below, but - of course - that's not the same as sorting a string.
#!/usr/bin/perl use strict; use warnings; my $string = "ABCDEFG"; print "$string\n"; my $reversed = reverse $string; print "$reversed\n"; exit;
... which will print this:
$ perl reverse.pl ABCDEFG GFEDCBA