Você provavelmente quer dizer algo assim:
perl -pe 's|(?<=root:)[^:]*|crypt("my_password","\\$my_salt\$")|e' /etc/shadow
De perldoc perlre
:
Substitution-specific modifiers described in
"s/PATTERN/REPLACEMENT/msixpodualngcer" in perlop are:
e - evaluate the right-hand side as an expression
No lado direito, você pode usar $&
para se referir à parte correspondente e $1
para a primeira parte capturada e assim por diante.