Programs for different language learning - Perl
What you did well


use strict;, use warnings;, and my scoping
qw(list of words) instead of ('list', 'of', 'words')
Generally straightforward, readable Perl.


Suggestions


There is a hard-coded correspondence between my $lang = 3 and the fact that there are three choices.  My suggestion:

my $choices = @choices;


In Perl, $choices and @choices are different variables: the former is a scalar, and the latter is a list.  The assignment above coerces the list into a scalar, and it does so by taking the number of elements in the list.  (You used this technique in @choices[rand @choices].
Parentheses are optional for subroutine calls, and they are typically omitted for well-known functions such as print.
For maintainability, terminate the last print with a semicolon, even if you aren't required to.
As @glennjackman already told you, say would be better than print, as it also outputs a trailing newline.
Avoid super-long string literals by using a here document.

    print &lt;&lt;"INTRO";
Welcome to the test script…
There are $choices languages to choose from.
@choices
INTRO

Your logic is rather trusting: any input other than "Ruby" or "Python" is treated as if it were "Perl".

A better way:

use feature qw(say);
…

chomp(my $choice = &lt;STDIN&gt;);
if ($choice eq 'Perl') {
    say "You're already writing in Perl!! Let me choose for you:";
    say @choices[rand @choices];
} elsif (grep { $choice eq $_ } @choices) {
    say "You have chosen $choice!";
}

A possible outcome is "You're already writing in Perl!! Let me choose… Perl".  I consider that to be a logic bug.