Substr прекрасно работает для вашего примера.Splice работает с массивом, поэтому вам нужно выполнить обход туда:
#!/usr/bin/perl
my ($ab, @ab, @first_ten, $first_ten);
$ab = "asljdhashdklasjkl ;dajs;ld";
@ab = split(//, $ab);
@first_ten = splice(@ab, 0, 10);
$first_ten = join('', @first_ten);