Я попробовал ваш код (со строгими предупреждениями и, как мне кажется, необходимыми модулями, с превращением свободных переменных в строки):
kyle@indigo64 ~[home*]$ cat x.pl
use strict;
use warnings;
use HTTP::Cookies;
use LWP::UserAgent;
use CGI::Cookie;
my $ua = new LWP::UserAgent;
my %cookies = fetch CGI::Cookie;
my $encoded = $cookies{'SCred'};
my $cookie_jar = new HTTP::Cookies;
$cookie_jar->set_cookie(
1, "SCred", '$encoded',
"/", '$SSO_DOMAIN', "",
0, 0, 60*60, 0
);
$ua->cookie_jar($cookie_jar);
print "ua: ",$ua,"\n";
print "ua->cookie_jar: ",$ua->cookie_jar,"\n";
mortis@indigo64 ~[home*]$ perl x.pl
ua: LWP::UserAgent=HASH(0x82f8cc8)
ua->cookie_jar: HTTP::Cookies=HASH(0x82f8b84)
kyle@indigo64 ~[home*]$
и это работает. Возможно, вы захотите опубликовать более полный пример, или между строками '$ ua = new ...' и '$ ua-> cookie_jar' есть строки, где $ ua переназначается или иным образом устанавливается в undef? Если вы напечатаете значение '$ ua' непосредственно перед вызовом cookie_jar, вы увидите, что оно undef, оно должно быть сброшено где-то между первым присваиванием и тем местом, где вы вызываете этот метод.