in reply to what does my ($subdir, @keywords) = split; do.

my ($subdir, @keywords) = split;

is the same as

my @array = split; my ($subdir, @keywords) = @array;

is the same as

my @array = split; my $subdir = $array[0]; my @keywords = @array[1..$#array];

In other words, $subdir gets whatever's in front of the first space, and @keywords gets all the other fields returned by split (if any).