О себе События Портфолио Статьи Гостевая Фотоальбом На злобу дня Ссылки Учеба Программы
Alex_K (г.Киров) - Алексей Кощеев
Хостинг и регистрация доменов в Кирове

Интересные решения 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 года.

Далее: Как узнать, является ли переменная числом?
Предыдущий вопрос:Как с помощью Perl закачать файл по FTP?
Перейти к списку вопросов
Fanshop.ru

Рейтинг@Mail.ru

Rambler's Top100

© Алексей Кощеев, г.Киров, 2001-2024 хостинг предоставлен компанией Айхэд