পার্ল অ্যারে প্রিন্ট করার সহজ উপায়? (একটি সামান্য বিন্যাস সহ)


98

প্রতিটি উপাদানগুলির মধ্যে কমা দিয়ে পার্ল অ্যারে প্রিন্ট করার কোন সহজ উপায় আছে?

এটি করার জন্য লুপের জন্য লেখা খুব সহজ তবে বেশ মার্জিত নয় .... যদি তা বোঝা যায়।

উত্তর:


150

শুধু ব্যবহার করুন join():

# assuming @array is your array:
print join(", ", @array);

9
অথবা, আপনি সত্যিই মলিন হতে চান যদি: {local $,=', ';print @array}
musiKk

10
এটি করার একাধিক উপায় রয়েছে .. তবে এটি এমন উপায় যা আপনাকে ঘৃণা করার পরে কোডটি বজায় রাখে না। হ্যাঁ, পার্ল্ডোক পারলভার বিদ্যমান, তবে আমি সমস্ত যুক্তিযুক্ত ভেরিয়েবলগুলি কী করছে তা নির্ধারণের জন্য প্রতিটি অন্য লাইনে পার্লভারকে আঘাত করার চেয়ে "যোগ", '@ অ্যারে "এর দিকে নজর দেব।
ওসোর

@ ওসর: এজন্যই আমি এটিকে নোংরা বলেছি। তবে ভাল, অন্যান্য উত্তরগুলি তাকান, আমি আসলেই সবচেয়ে খারাপ অপরাধী নই। :)
musiKk

আমার পছন্দ করুন আমি এমন কিছু ব্যবহার করব যদি আমি আমার সহকর্মীদের ধাঁধা দিতে চাইতাম। :)
অ্যালেক্স

4
ডিরেক্টরি কন্টেন্ট মুদ্রণের জন্য এটি দুর্দান্ত কাজ করেছে। print "current directory contains " . join(', ', <*>) . "\n";
র‌্যান্ডাল

32

আপনি ব্যবহার করতে পারেন Data::Dump:

use Data::Dump qw(dump);
my @a = (1, [2, 3], {4 => 5});
dump(@a);

উত্পাদন:

"(1, [2, 3], { 4 => 5 })"

4
উবুন্টু / মিন্টে, লাইবডাটা-ডাম্প-পার্ল প্যাকেজ ইনস্টল করুন।
MUY বেলজিয়াম

4
এখানে সেরা উত্তর! বহুমাত্রিক অ্যারেগুলির সাথেও কাজ করে। সর্বাধিক নমনীয়।
লও লোপোল্ড হার্টজ 준영

18

যদি আপনি যে ধরণের স্পষ্টতার জন্য কোডিং করছেন যা পার্ল দিয়ে সবে শুরু করছেন এমন কেউ বুঝতে পারে তবে প্রচলিত thisতিহ্যবাহী এই কন্সট্রাক্টটি এর উচ্চারণ সহ উচ্চতার সাথে স্পষ্টতা ও স্বচ্ছতার সাথে বলে:

$string = join ', ', @array;
print "$string\n";

এই নির্মাণটি নথিভুক্ত করা হয় perldoc -fjoin

যাইহোক, আমি সর্বদা পছন্দ করেছি যে $,এটি কীভাবে সহজ করে। বিশেষ ভেরিয়েবল $"ইন্টারপোলেশন এবং বিশেষ ভেরিয়েবল $,তালিকার জন্য। localস্ক্রিপ্ট জুড়ে riেউয়ের প্রভাব এড়াতে গতিশীল স্কোপ-কনস্ট্রেনিং ' ' এর সাথে যে কোনও একটি সংযুক্ত করুন :

use 5.012_002;
use strict;
use warnings;

my @array = qw/ 1 2 3 4 5 /;

{
    local $" = ', ';
    print "@array\n"; # Interpolation.
}

বা $, সহ:

use feature q(say);
use strict;
use warnings;

my @array = qw/ 1 2 3 4 5 /;
{
    local $, = ', ';
    say @array; # List
}

বিশেষ পরিবর্তনশীল $,এবং পারলভারে$" নথিভুক্ত করা হয় । কীওয়ার্ডটি এবং কীভাবে একটি বিশ্বব্যাপী যতিচিহ্ন পরিবর্তনশীল মান পরিবর্তনের প্রভাব সীমাবদ্ধ ব্যবহার করা যেতে পারে সম্ভবত শ্রেষ্ঠ বর্ণনা করা হয় perlsublocal

উপভোগ করুন!


10

এছাড়াও, আপনি ডেটা :: ডাম্পার চেষ্টা করতে চাইতে পারেন । উদাহরণ:

use Data::Dumper;

# simple procedural interface
print Dumper($foo, $bar);

4
ডেটা :: ডাম্পার একটি স্ট্যান্ডার্ড মডিউল এবং এটি পার্লের সাথে ইনস্টল করা আছে। সমস্ত স্ট্যান্ডার্ড ব্যবহারিক এবং মডিউলগুলির একটি তালিকা পেতে, দেখুন pelrdoc perlmodlib
shawnhcorey

7

পরিদর্শন / ডিবাগিংয়ের জন্য Data::Printerমডিউলটি পরীক্ষা করুন । এটি কেবল একটি কাজ এবং একটি জিনিস করার জন্য বোঝানো হয়েছে:

পার্ল ভেরিয়েবল এবং অবজেক্টগুলি স্ক্রিনে প্রদর্শন করুন, সঠিকভাবে ফর্ম্যাটেড (কোনও মানুষের দ্বারা পরিদর্শন করার জন্য)

ব্যবহারের উদাহরণ:

use Data::Printer;  
p @array;  # no need to pass references

উপরের কোডটি এরকম কিছু হতে পারে (রঙ সহ!):

   [
       [0] "a",
       [1] "b",
       [2] undef,
       [3] "c",
   ]

উবুন্টুর অধীনে যে কেউ libdata-printer-perlপ্যাকেজটি ইনস্টল করতে পারবেন ।
প্ল্যানেপ

3

আপনি কেবল printএটি করতে পারেন ।

@a = qw(abc def hij);

print "@a";

আপনি পাবেন:

abc def hij

4
আপনার মুদ্রণটিতে কমা রয়েছে কারণ তারা অ্যারের প্রতিটি উপাদানে রয়েছে। আপনার সত্যই ঘোষণা করা উচিত use warnings;এবং এটি কী বলে তা দেখতে হবে।
টোটো


1

ব্যবহার Data::Dumper:

use strict;
use Data::Dumper;

my $GRANTstr = 'SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, EXECUTE, TRIGGER';
$GRANTstr    =~ s/, /,/g;
my @GRANTs   = split /,/ , $GRANTstr;

print Dumper(@GRANTs) . "===\n\n";

print Dumper(\@GRANTs) . "===\n\n";

print Data::Dumper->Dump([\@GRANTs], [qw(GRANTs)]);

তিনটি ভিন্ন আউটপুট শৈলী উত্পাদন করে:

$VAR1 = 'SELECT';
$VAR2 = 'INSERT';
$VAR3 = 'UPDATE';
$VAR4 = 'DELETE';
$VAR5 = 'LOCK TABLES';
$VAR6 = 'EXECUTE';
$VAR7 = 'TRIGGER';
===

$VAR1 = [
          'SELECT',
          'INSERT',
          'UPDATE',
          'DELETE',
          'LOCK TABLES',
          'EXECUTE',
          'TRIGGER'
        ];
===

$GRANTs = [
            'SELECT',
            'INSERT',
            'UPDATE',
            'DELETE',
            'LOCK TABLES',
            'EXECUTE',
            'TRIGGER'
          ];

1

আপনি যা সন্ধান করছেন এটি এটি নাও হতে পারে তবে একটি কার্যভারের জন্য আমি এখানে কিছু করেছি:

$" = ", ";
print "@ArrayName\n";

0

মানচিত্রটিও ব্যবহার করা যেতে পারে তবে আপনার যখন প্রচুর জিনিস চলছে তখন কখনও কখনও পড়া শক্ত read

map{ print "element $_\n" }   @array; 

0

যদিও আমি নীচে দৌড়ানোর চেষ্টা করিনি। আমি মনে করি এটি একটি জটিল উপায়।

map{print $_;} @array;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.