Как правильно использовать ООП?
Я не пишу на Perl, больше на Java, но попробую подсказать.

Если вы используете только один item_id, то оба варианта имеют право на жизнь, но первый определённо элегантнее.

Если-же у вас много item_id, то второй вариант предпочтительнее, если надо посчитать сумму результатов для набора item_id. Чтоб не плодить множество объектов pricer.

Если я не ошибаюсь в своих предположениях насчёт вашей задачи.
Зависит от сути, которую вы хотите вложить.
Например, если этот объект является «моделью» и дает доступ к операциям в БД со всякими item'ами, то второй вариант выходит. А если объект умеет работать только с одним item, то логично его с ним и инициализировать (первый вариант).