Perl question - reversing order of items where number of items varies

IronWing

No Lifer
Jul 20, 2001
69,134
27,081
136
I have a text file like so:

Bob's House, Smallville, Oregon, USA
Bigtown, New York, USA
Argentina
Ontario, Canada
Nice Beach, Green Lake, Big Province, Poland

Each line holds a separate geographical location, ordered from most specific to country. Commas are used to separate values. All entries have at least the country.

What I want is:
USA, Oregon, Smallville, Bob's House
USA, New York, Bigtown
Argentina
Canada, Ontario
Poland, Big Province, Green Lake, Nice Beach

It's been years since I've done any programming so I'm not sure how to approach this. I can load each line into an array and use the pop function to pull the last value on a line and start building a reversed array for each line in the correct order but I'm trying to figure out how to deal with the fact that there aren't an equal number of values on each line. Perl's the hammer I'm most familiar with. Any ideas?
 
Last edited:
Jul 27, 2020
16,659
10,666
106
Piece of cake for me to do this in C but it would be pretty crude.

Load each line in a buffer of 4096 or more characters as needed

Increment variable index while checking each character until it encounters '\0'

Then start decrementing index in reverse until comma is encountered. Set that index as value of variable EOL and copy all characters to newstring until '\0' is reached. Copy value of EOL into variable index and start the decrement loop again. Keep doing this over and over until index reaches zero.

So curious question: do all programming languages go through iteration over every memory location for a string when doing operations like this? I mean, I think so but would be interested to know if I'm missing something.
 

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,255
3,853
75
So curious question: do all programming languages go through iteration over every memory location for a string when doing operations like this? I mean, I think so but would be interested to know if I'm missing something.
I think it's necessary, if only to read the string and write the string. However you slice it, it's an O(n) problem in characters.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |