Судя по тому, что вас волнует такой вопрос, ваш модуль сравнительно небольшой, и для него оба варианта приемлемы. Когда/если ваш pricer.pm станет достаточно большим, чтоб возникла потребность в ООП, правильный вариант вам станет очевиден.
Вообще правильнее будет делать так:
$item->calc_total_price();
Где calc_total_price будет выглядеть как-то так:
my $item = shift;
return $pricer->calc_total( item_id => $item->{id});
Т.е. специальный объект (или функцию), который обсчитывает данные итема, использовать не явно, а внутри метода класса Item. Но это всё теория, до которой в перле мало у кого доходят руки.
Сразу хочу предостеречь вас от изучения ООП на примере перла. Оно там сделано ужасно и лишь частично исправляется костылями. Рискуете получить травму на всю жизнь, подобно GOTO-программистам на бейсике. Чтобы лучше понять что такое ООП и как им пользоваться, посмотрите как оно реализуется в Java/С++, Python/Javascript, LISP/Scheme.