class libwww-perl {
package { "libwww-perl":
ensure => latest
}
}

class apache2 {
include libwww-perl
}

class tomcat {
include libwww-perl
}

Vs:

class apache2 {
package { "libwww-perl":
ensure => latest
}
}

class tomcat {
package { "libwww-perl":
ensure => latest
}
}

And, as a final case, lets say you move to a platform without a libwww-perl package, or you need to use CentOS and Debian at the same time:

class libwww-perl {
case $operatingsystem: {
debian: {
package { "libwww-perl":
ensure => latest
}
}
freebsd: {
exec { "libwww-perl":
command => "/usr/bin/perl -MCPAN -e 'install libwww',
onlyif => ...
}
}
}
}

Compared to having to refactor everyplace that package exists for the same.