in reply to Tie::File and CGI

It looks like a path issue to me. When you run the script from the command line, your cwd for the program is different from when you run from the CGI. The line:
my $filecard="../GnomeCard.gcrd";
is very suspect because it includes a relative path. If you add to your script a die statement if the tie fails, that may help you catch the error, such as:
tie @Card, 'Tie::File', $filecard or die "couldnt tie $filecard as a Tie::File $!\n";
This way, the reason the tie didnt work will be sitting in your error log.

Its generally important to keep in mind that cgi scripts will run under a different environment when run as a cgi, as opposed to running from the command line.

Unless you have a very specific reason, commands like tie() or open() should always have failure tests - it will save you many headaches in the future.

Not directly related to the question, but you open statement should also have error checking:
open FILE, "<$filecard" or die "couildnt open $filecard for reading $!\n";