in reply to Re^2: script for deleting html, images and css from server
in thread script for deleting html, images and css from server

Moving use to a subroutine, if the subroutine is in the same file, has no effect for non-pragmatic modules. It's executed at compile time when the subroutine is being compiled, not at the time when it's being called.
لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
  • Comment on Re^3: script for deleting html, images and css from server

Replies are listed 'Best First'.
Re^4: script for deleting html, images and css from server
by Aldebaran (Curate) on Apr 05, 2015 at 19:24 UTC

    I don't know what you mean by "non-pragmatic;" maybe it's a jargon term. It's certainly useful to me, and I have the ftp stuff stuffed away in modules, where I keep the functioning part and the data part separated. I've renamed the package "scrubber1" now, which is more descriptive:

    package scrubber1; require Exporter; use config1; our @ISA = qw(Exporter); our @EXPORT = qw( get_ftp_object get_html_filenames kill_files ); sub get_ftp_object { use strict; use Net::FTP; use 5.010; my $sub_hash = "my_ftp"; my $domain = $config{$sub_hash}->{'domain'}; my $username = $config{$sub_hash}->{'username'}; my $password = $config{$sub_hash}->{'password'}; #dial up the server my $ftp = Net::FTP->new( $domain, Debug => 1, Passive => 1 ) or die "Can't connect: $!\n"; $ftp->login( $username, $password ) or die "Couldn't login\n"; return $ftp; }

    The values for config lie in config1, and these need to be redacted to show:

    package config1; use Exporter qw(import); our @EXPORT = qw(%config); our %config = ( my_ftp => { domain => 'redacted', username => 'redacted', password => 'redacted', }, ); 1;

    I'm not sure how "just-in-time" compilation works for such a scheme, but from my perspective, it happens really quickly.

      My point was your module was equivalent to
      package scrubber1; require Exporter; use config1; use 5.010; use Net::FTP; our @ISA = qw(Exporter); our @EXPORT = qw( get_ftp_object get_html_filenames kill_files ); sub get_ftp_object { use strict; my $sub_hash = "my_ftp"; my $domain = $config{$sub_hash}->{'domain'}; my $username = $config{$sub_hash}->{'username'}; my $password = $config{$sub_hash}->{'password'}; #dial up the server my $ftp = Net::FTP->new( $domain, Debug => 1, Passive => 1 ) or die "Can't connect: $!\n"; $ftp->login( $username, $password ) or die "Couldn't login\n"; return $ftp; }

      strict is a pragmatic module, so its position might change things, but you can safely move it to the beginning, too, as both @ISA and @EXPORTER are correctly declared with our.

      لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ