http://qs321.pair.com?node_id=1224172

nateh has asked for the wisdom of the Perl Monks concerning the following question:

I'm having trouble with my perl script as the username in my script is an email address with the @ symbol and it is throwing an error. For instance:

$user = 'first.last@somewhere.com';

I'm unable to change the username to be something other than an email and therefore remove the @ symbol. Is there a way to keep such a username and get it to work in perl? Thanks

Replies are listed 'Best First'.
Re: email address as username
by LanX (Saint) on Oct 17, 2018 at 16:23 UTC
    > it is throwing an error.

    which error?

    > $user = 'first.last@somewhere.com';

    that's fine. You most likely did use double quotes instead

    $user = "first.last@somewhere.com";

    which will try to interpolate the array @somewhere.

    But this is just a guess since you didn't give us details

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

    update

    compare https://perlmaven.com/quoted-interpolated-and-escaped-strings-in-perl

      If I use single quotes, I get the error "Can't call method "login" on an undefined value at line x." Here's the relevant portion of the code:
      use Net::FTP; my ($ftp, $host, $user, $pass, $dir, $fpath); $host = 'ftp.my.com'; $user = 'last.first@somewhere.com'; $pass = 'mypass'; $dir = '/my/file_path/onftp'; $fpath = 'myfileonserver_xml.zip'; $ftp = Net::FTP->new($host, Debug => 0); $ftp->login($user, $pass) || die $ftp->message; ##this is line x## $ftp->cwd($dir); $ftp->put($fpath) || die $ftp->message; $ftp->quit;
        From the Net::FTP docs:
        $ftp = Net::FTP->new("some.host.name", Debug => 0) or die "Cannot connect to some.host.name: $@";
        Check for errors as shown in the docs. What does that say?

        You are missing a semi-colon from the end of this line.

        use Net::FTP
        poj

        You are getting the error on your first use of the $ftp object.

        That means the construction of it in the line above failed, where you specified $ftp = Net::FTP->new($host, Debug => 0);

        I can't see from here why it failed, you will have to debug if you can reach $host using some other method to ftp for instance.

        Cheers, Sören

        Créateur des bugs mobiles - let loose once, run everywhere.
        (hooked on the Perl Programming language)