I've not used Crypt::PK::ECC before, but on reading the documentation, it looks like you don't need the second argument on encrypt since you provided the public key file in the constructor.
Update: OK, I installed it and tried it out myself. I'm not having any luck yet. I'll update again if I can make something interesting happen.
Update 2: After digging around in the tests and source code a little, I haven't been able to come up with anything that works. I get the same problem: I can encrypt/decrypt very short strings (up to 20 characters), but once I hit the twenty-first character, I get "Invalid hash specified".
When your only tool is a hammer, all problems look like your thumb.