Unfortunately Perl isn't great for data structures which meant I had to design these myself. This presented a challenge where I had to first design the data structure, and then design a way to access them in the order in which they were represented in the original CSV. The data structure I used was a hash (also known as an associative array) of arrays, and is documented in the Algorithms section of this document.
I also ran into some trouble with Windows CSV format compatibility early on. Up until that stage I had been testing the program on CSV files I had created on a Linux machine only. Using a Windows file meant that the end of line character I had previously been looking for was no longer valid. However once I located the offending end of line character and added it to those recognised by CsvSQL there we're no further complications.
During implementation of the DELETE command I found some difficulty with removing elements from the middle of an array. Perl has a splice() command which will facilitate this, however as CsvSQL often requires to remove several elements at a time which may not be in sequence, this can prove problematic. In order to solve this, as each value is removed, the index value of the next value to be removed must be decremented in order to correctly remove all the applicable values.