Compression.pm 841 B

12345678910111213141516171819202122232425262728293031
  1. package Dpkg::Compression;
  2. use strict;
  3. use warnings;
  4. use base qw(Exporter);
  5. our @EXPORT = qw(@comp_supported %comp_supported %comp_ext $comp_regex
  6. %comp_prog %comp_decomp_prog
  7. get_compression_from_filename);
  8. our @comp_supported = qw(gzip bzip2 lzma xz);
  9. our %comp_supported = map { $_ => 1 } @comp_supported;
  10. our %comp_ext = (gzip => 'gz', bzip2 => 'bz2', lzma => 'lzma', xz => 'xz');
  11. our $comp_regex = '(?:gz|bz2|lzma|xz)';
  12. our %comp_prog = (gzip => 'gzip', bzip2 => 'bzip2', lzma => 'lzma',
  13. xz => 'xz');
  14. our %comp_decomp_prog = (gzip => 'gunzip', bzip2 => 'bunzip2', lzma => 'unlzma',
  15. xz => 'unxz');
  16. sub get_compression_from_filename {
  17. my $filename = shift;
  18. foreach my $comp (@comp_supported) {
  19. if ($filename =~ /^(.*)\.\Q$comp_ext{$comp}\E$/) {
  20. return $comp;
  21. }
  22. }
  23. return undef;
  24. }
  25. 1;