In C++, a virtual method is one that can be redefined in inheriting classes. In that sense, all methods in Perl are virtual.
In Java and C++ a method is called static, if it can be called on the class, not the object itself. In that sense, all methods in Perl are also static by default. You can explicitly disallow the static usage of a method with something like this:
use Scalar::Util qw(blessed)
sub non_static {
my $self = shift;
die "Don't use as a static method" unless defined blessed($self)
...
}