BASIC really isn't useful for anything.
Being one of the '80 generation, you bet right.
Perl is just a way to learn how NOT to program.
BASIC is plain, simple and fun. Children want to see/hear things asap and a BASIC with gfx/audio commands is strongly recommended.
Forget OOP: not for children.
And I would rather choose COBOL/FORTRAN than Perl/Python/Ruby as the first language to learn.
My personal suggestion:
Try with BASIC (with gfx/sound), then if your son is willing to know more, go directly to Assembly to check for real passion.
Great coders perfectly know (but seldom use) Assembly language.
Since I made the statement about BASIC, I will stand by it.
I never said that it wasn't fun and in fact, I started off using BASIC back in the 80's too.
Old 8/16 bit computers were made with BASIC and assembly in mind and therefore had all sorts of extensions that allowed you to access the hardware directly.
At that point though (and there are exceptions, e.g. BBC BASIC) things quickly became a lot harder and a lot less fun.
Standard BASIC however doesn't have these extensions.
Suggesting that assembler should be used after BASIC was funny though. We are no longer in the 80's...
Likewise on COBOL and FORTRAN front...
Modern general-purpose scripting languages however do allow you to get 'real' things done quickly and therefore results can be demonstrated quickly.
From what the original poster said, his son isn't all that interested, so showing that you can get results quickly is important.
Pascal was suggested as a good language to learn programming concepts in - I would definitely agree.