in reply to Re^3: Backup User's files
in thread Backup User's files

Karl, I run the script and here's the output from the terminal:

MacPeter:begperl peli$ perl -c postinstall postinstall syntax OK MacPeter:begperl peli$

Peter

Replies are listed 'Best First'.
Re^5: Backup User's files
by karlgoethebier (Abbot) on Jan 08, 2018 at 19:31 UTC

    Yes, may be. But if you add use strict; use warnings; as kcott suggested you should get something like this:

    perl -c peli.pl Global symbol "$APPSUPPORT_PATH" requires explicit package name (did y +ou forget to declare "my $APPSUPPORT_PATH"?) at peli.pl line 7.#!/bin +/shBEGIN not safe after errors--compilation aborted at peli.pl line 7 +.

    The only other change i made to your program was changing the magic line AKA shebang to #!/usr/bin/env perl.

    Best regards, Karl

    «The Crux of the Biscuit is the Apostrophe»

    perl -MCrypt::CBC -E 'say Crypt::CBC->new(-key=>'kgb',-cipher=>"Blowfish")->decrypt_hex($ENV{KARL});'Help

      If I use warnings, every line is wrong? The "$APPSUPPORT_PATH" is declared in the code to "/Library/Application Support/MakeMusic/Finale" and it doesn't matter if I use "\" for whitespace or not, it works anyhow.

      Peter

        What strict and Karl were pointing out is that you need to tell perl the scope of $APPSUPPORT_PATH 1. By default, strict perl wants you to be explicit on all variables, so if you wanted the variable to be global to your main package (the default package in a perl program), you should refer to the variable as $main::APPSUPPORT_PATH -- hence, the message "requires explicit package name". If you want to leave it in the global main package, but refer to it more shortly, you would declare it as our $APPSUPPORT_PATH = ... -- but this still fills up the main namespace, which you probably don't need to do, since you aren't referring to the variables from any lexical scope other than this file. Instead, you probably want to limit that variable's scope to the current lexical block (in your circumstance, the file-level scope), which would be done with my $APPSUPPORT_PATH = ....

        See perldoc my and our for the details of those two functions. And see Coping with Scoping for more on the scope of variables.

        update: 1$APPSUPPORT_PATH, and all those other variables in your list of variable definitions.