the if... else can be expressed a bit more elegantly:
@{$HashRef->{$ItemId}} ||= []; push @{$HashRef->{$ItemId}}, $DataSource;
apart from that: the notation of variable names you chose is not perlish. in perl you mix capital and small letters only for class names: package MyClass; vs:  my $hash_ref;

language is a virus from outer space.

In reply to Re: Complex Data Structure Suggestions Wanted by thcsoft
in thread Complex Data Structure Suggestions Wanted by Ninthwave

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":