كيف يمكنني إنشاء دليل والأم الدلائل في قيادة بيرل واحد؟

StackOverflow https://stackoverflow.com/questions/1050365

سؤال

في بيرل، كيف يمكنني إنشاء دليل فرعي و، في نفس الوقت، إنشاء الدلائل الأصل إذا لم تكن موجودة؟ مثل قيادة مكدير -p UNIX على ذلك؟

هل كانت مفيدة؟

المحلول

use File::Path qw(make_path);
make_path("path/to/sub/directory");

ووmkpath إهمال وmake_path فضل نابع من مناقشة في بيرل 5 حمالين الخيط الذي تم أرشفة <لأ href = "http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-05 /msg00209.html "يختلط =" noreferrer "> هنا .

وباختصار، تحولت بيرل 5.10 اختبار حتى الاحراج في إعراب حجة واجهة makepath (). لذلك تم استبداله مع صيغة أبسط التي جرت تجزئة كوسيطة النهائية لتعيين خيارات الدالة.

نصائح أخرى

استخدم mkpath من وحدة الملف :: مسار:

use File::Path qw(mkpath);
mkpath("path/to/sub/directory");

وتجاهل يرجى إذا كنت تبحث عن وحدة بيرل مع وظيفة "مكدير -p" لكن التعليمة البرمجية التالية العمل:

my $dir = '/root/example/dir';

system ("mkdir -p $dir 2> /dev/null") == 0 
    or die "failed to create $dir. exiting...\n";

ويمكنك استخدام وحدة نمطية ولكن بعد ذلك لديك لتثبيته على كل خادم كنت تسير على ميناء التعليمات البرمجية الخاصة بك على. وعادة ما تفضل استخدام وظيفة نظام لعمل مثل مكدير لأنها فوق أقل لاستيراد والدعوة الى وحدة عندما كنت في حاجة إليها مرة واحدة فقط لإنشاء دليل.

http://perldoc.perl.org/File/Path.html

و"وظيفة make_path يخلق الدلائل معين إذا لم يفعلوا ذلك موجود [كذا!] من قبل، مثل الكثير من mkdir -p قيادة يونكس"

ومكدير () يسمح لك لخلق الدلائل في السيناريو بيرل بك.

مثال:

use strict;
use warnings;

my $directory = "tmp";

unless(mkdir($directory, 0755)) {
        die "Unable to create $directory\n";

وهذا البرنامج إنشاء دليل يسمى "تمة" مع تعيين الأذونات إلى 0755 (فقط المالك لديه الإذن للكتابة إلى الدليل، ويمكن لأعضاء المجموعة وغيرها فقط عرض الملفات وسرد محتويات الدليل).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top