![]() ![]() |
Интересные решения Perl. Вопросы и ответыКак с помощью Perl разбить какой-либо файл на несколько файлов?Готовое решение: #! /usr/bin/perl use strict; my $usage = "USAGE: [perl] split.pl FILENAME [BLOCK_SIZE]\n"; unless ( $ARGV[0] ) { print $usage; exit; } my $file = $ARGV[0]; my $blockSize; if ( !$ARGV[1] || $ARGV[1] !~ /^\d+$/ ) { $blockSize = 8_000_000; } else { $blockSize = $ARGV[1]; } my $originalSize = (stat($file))[7]; if ( $originalSize <= $blockSize ) { print "Size of your file is $originalSize. " . "It is less than BLOCK_SIZE. Nothing to do!\n"; exit; } open(F, "<$file") or die $!; binmode(F); my $buff = undef; my $i = 0; while ( read(F, $buff, $blockSize) ) { $i++; open(FF, ">$file.p$i") or die $!; binmode(FF); print FF $buff; close(FFF); } close(F); open (F, ">$file.si") or die $!; binmode(F); print F "$file\n$i\n"; close(F); print "File $file succesfully splited to $i files\n"; exit; Вызывается скрипт с одним или двумя параметрами: 1 - путь к файлу для разбивки, 2 - размер создаваемых частей в байтах. Автоматически дополнительно создается файл с расширением si, первая строка которого - путь разбиваемого файла, вторая - число частей, на которые файл был разбит. Опубликовано: 23 октября 2005 года.
|
|
© Алексей Кощеев, г.Киров, 2001-2023 |
|