Question: I have a table in which I need to store some serialized json strings (mysql 5). I'm not sure what data type to use for the column which will do the storing. The strings will always be less than 100k. 

There are a few different text types to choose from when looking at the docs, is there one that is most appropriate for a string of that length? It seems like MEDIUMTEXT would be able to hold 100k strings?

<http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html>

Answer: 
The second `->` isn't needed, actually.

Here's the deal: All Perl array values and hash values must be scalars. That means either a string, number, or array/hash reference (and not a plain old array or hash).

So the first `->` operator dereferences the array and gets at the x'th row. In there is-- not an array, but an array reference. So in order to get to the data in there, you'd theoretically need another `->` operator.

But get this. Perl is smart: It knows that after one array or hash access, if another access happens, the only way this is possible is through an array/hash reference (because your first array/hash access MUST return a scalar)! So you don't need the second arrow after all.

See [perldata](http://perldoc.perl.org/perldata.html) for more details.
When you

```
push @array, [@row];

```

you are pushing a *reference* to an array. This is necessary because of Perl's rule that arrays are flattened. So $array->[x] is a reference to the row array, not the row array itself. However, between subscripts, the arrow is optional. So `$array->[x]->[y]` is exactly the same as `$array->[x][y]` (which is exactly the same as `${$array}[x][y]`, etc.)

This is all explained in the [Perl reference tutorial](http://perldoc.perl.org/perlreftut.html)