This looks strange to me... I wonder on which system and in which shell you are doing this.
It looks like rel2abs is - on your system - a shell command (I don't have it). So I assume you are testing in the shell.
IMHO: Your shell should handle the expansion of ~ to the correct path. If it does not, try to fix your shell or try a different shell.
Tests in my shell (/bin/bash):
$ perl /tmp/t.pl ~/.vimrc ~user/.vimrc ~root/.vimrc
/home/linuxer/.vimrc
/home/user/.vimrc
/root/.vimrc
/tmp/t.pl:
#! /usr/bin/env perl
use strict;
use warnings;
use 5.020;
say $_ for @ARGV;